LinuxForum.Fans
Тема

Поиск через PATH

Автор: igor17 41 сообщений 6958 просмотров
#109989

Здравствуйте.
Есть такая задача, в которой надо найти фалы с атрибутом исполняемых, используя пути указанные в переменной PATH.

через find у меня не получается ни то не другое.
например, если find / -perm ххх то число определяющее что файл исполняемый может быть любым: от 777
до 100 в конце концов.
Какие ещё есть варианты, кто подскажет?

#109990

какие тут могут быть варианты?

text
find `echo $PATH | sed 's/:/ /g'` -executable -type f -ls
#109992
igor17 написал:
до 100 в конце концов.

не, 100 не исполняемый. Вы ищете в $PATH, а там файлы только рута. Но вы-же не рут! Потому 100 - НЕ исполняемый.
да. писать надо так: -perm +x, и не забудьте - у каталогов флаг x имеет иной смысл.

#109993

спасибо, только на команду
find `echo $PATH | sed 's/:/ /g'` -executable -type f -ls
выдаёт сообщение об ошибке:
find: invalid predicate `-executable'

счас попробую через -perm +x

#109996
igor17 написал:
find: invalid predicate `-executable'

обновите find до версии 4.3.0

text
find `echo $PATH | sed 's/:/ /g'` +perm +x -type f -ls

но это немного не то: надо проверить чей файл, и если наш проверять u+x, если нашей группы g+x, и если чужой o+g. Впрочем, и так пойдёт наверное.

#109997

спасибо большое вроде заработало.
Скажите а как обновить find .
Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.

#109998
igor17 написал:
Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.

вот это не ко мне. :(
а что пишет find --version ?
и наверное uname -a

#110000

GNU find version 4.2.31
Linux Lin 2.6.22-14

#110001

igor17, это очень старая ОС, проще всего её заново поставить...

#110248

drBatty, спасибо, установка новейшей версии многое изменила
(к лучшему :))

#110885

drBatty, вы могли бы мне объяснить, что значит эта часть программы :

sed 's/:/ /g'`

#110894

видимо она каким-то образом заменяет двоеточия на пробелы.... ?

#110896
igor17 написал:
sed 's/:/ /g'`

я об этом целую книгу напейсал

Но тут просто: в $PATH пути записаны через двоеточие, а для find они задаются через пробелы. Вот я и поменял двоеточия на пробелы.
попробуйте
[console]$ echo "A:B:C" | sed 's/:/ /g'[/console]

#110897
igor17 написал:
видимо она каким-то образом заменяет двоеточия на пробелы.... ?

глобальным smile

#110900

спасибо уже читаю :)

#111573

drBatty,
скажите пожалуйста а штрих ` после модификатора /g'`служит для
передачи данных дальше для обработки и продолжение выполнения скрипта?

#111715

при запуске скрипта сообщений об ошибках нет, но и на мою почту (естественно не эту :))
ничего не приходит.
Видно где-то нахомутал. Вопрос в том, где?

find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | wc –l | mail -s "Вывод команды" pupkin@mail.ru

#111971

Попробывал у меня всё норм правда на gmail отправлял.

#111973

tmp13, и число посчитанное пришло?

#111986

[console]find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for|wc -l
9262[/console]
аа
да всё пришло.

Войдите или зарегистрируйтесь, чтобы ответить.