Использование команды find для подсчета исполняемых файлов определенного типа - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь использовать команду поиска Unix для подсчета количества исполняемых файлов в каталоге определенного типа, а именно исполняемого файла Solaris (MSB). Я знаю, что с помощью

довольно легко получить счетчик всех исполняемых файлов в этом каталоге.
find . -type f -perm -u+rx | wc -l

однако это не учитывает исключительно исполняемые файлы Solaris (MSB). Я думал, чтобы исправить это, я бы просто добавил флаг -name, что-то вроде этого.

find . -name "sparc*" -type f -perm -u+rx | wc -l

Это правильно вернет, что их 6, только если я удалю часть команды, которая указывает, что они должны быть исполняемыми, если я оставлю эту часть команды, она вернет счетчик 0, который является «неправильным». Когда я смотрю на команду ls -l ниже, я вижу, что эти файлы исполняемые, я думаю? или что они указывают на исполняемый файл? Это может быть корнем проблемы.

ls -l    
lrwxrwxrwx  1 root   other          57 Jul 15  2005 sparc-sun-solaris2.9-c++ -> /usr/local/gnu/pkg/gcc-3.3.6/bin/sparc-sun-solaris2.9-c++*

Любое понимание приветствуется.

1 Ответ

1 голос
/ 19 апреля 2019

Попробуйте

find -L . -type f -perm -u+rx | wc -l

или

find -L . -name "sparc*" -type f -perm -u+rx | wc -l

или любые другие условия, которые вам нужны.

Параметр -L указывает find следовать символическим ссылкам вместо обработки самой ссылки. (см., например, https://www.unix.com/man-page/posix/1p/find/)

Например, с символической ссылкой

sparc-sun-solaris2.9-c++ -> /usr/local/gnu/pkg/gcc-3.3.6/bin/sparc-sun-solaris2.9-c++*

find должен вести себя так, как если бы файл /usr/local/gnu/pkg/gcc-3.3.6/bin/sparc-sun-solaris2.9-c++ находился непосредственно в sparc-sun-solaris2.9-c++

Если ваш find не поддерживает опцию -L, вы можете попробовать -follow следующим образом:

find . -follow -name "sparc*" -type f -perm -u+rx | wc -l
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...