Здравствуйте.
Есть такая задача, в которой надо найти фалы с атрибутом исполняемых, используя пути указанные в переменной PATH.
через find у меня не получается ни то не другое.
например, если find / -perm ххх то число определяющее что файл исполняемый может быть любым: от 777
до 100 в конце концов.
Какие ещё есть варианты, кто подскажет?
Поиск через PATH
какие тут могут быть варианты?
find `echo $PATH | sed 's/:/ /g'` -executable -type f -lsдо 100 в конце концов.
не, 100 не исполняемый. Вы ищете в $PATH, а там файлы только рута. Но вы-же не рут! Потому 100 - НЕ исполняемый.
да. писать надо так: -perm +x, и не забудьте - у каталогов флаг x имеет иной смысл.
спасибо, только на команду
find `echo $PATH | sed 's/:/ /g'` -executable -type f -ls
выдаёт сообщение об ошибке:
find: invalid predicate `-executable'
счас попробую через -perm +x
find: invalid predicate `-executable'
обновите find до версии 4.3.0
find `echo $PATH | sed 's/:/ /g'` +perm +x -type f -lsно это немного не то: надо проверить чей файл, и если наш проверять u+x, если нашей группы g+x, и если чужой o+g. Впрочем, и так пойдёт наверное.
спасибо большое вроде заработало.
Скажите а как обновить find .
Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.
Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.
вот это не ко мне. :(
а что пишет find --version ?
и наверное uname -a
GNU find version 4.2.31
Linux Lin 2.6.22-14
igor17, это очень старая ОС, проще всего её заново поставить...
drBatty, спасибо, установка новейшей версии многое изменила
(к лучшему :))
drBatty, вы могли бы мне объяснить, что значит эта часть программы :
sed 's/:/ /g'`
видимо она каким-то образом заменяет двоеточия на пробелы.... ?
sed 's/:/ /g'`
я об этом целую книгу напейсал
Но тут просто: в $PATH пути записаны через двоеточие, а для find они задаются через пробелы. Вот я и поменял двоеточия на пробелы.
попробуйте
[console]$ echo "A:B:C" | sed 's/:/ /g'[/console]
видимо она каким-то образом заменяет двоеточия на пробелы.... ?
глобальным smile
спасибо уже читаю :)
drBatty,
скажите пожалуйста а штрих ` после модификатора /g'`служит для
передачи данных дальше для обработки и продолжение выполнения скрипта?
при запуске скрипта сообщений об ошибках нет, но и на мою почту (естественно не эту :))
ничего не приходит.
Видно где-то нахомутал. Вопрос в том, где?
find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | wc –l | mail -s "Вывод команды" pupkin@mail.ru
Попробывал у меня всё норм правда на gmail отправлял.
tmp13, и число посчитанное пришло?
[console]find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for|wc -l
9262[/console]
аа
да всё пришло.