Попробуйте использовать подстановочный знак:
$ find /usr -name \*.sh
или
$ find /usr -name '*.sh'
Если в текущем рабочем каталоге есть файл, который соответствует *. Sh , подстановочный знак будет расширен до того, как find его увидит. Если в вашем рабочем каталоге есть файл с именем tkConfig.sh, команда find будет расширена до:
$ find /usr -name tkConfig.sh
, который будет искать только файлы с именем tkConfig.sh. Если у вас есть более одного файла, который соответствует *. Sh , вы получите синтаксическую ошибку от find :
$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list
Опять же, причина в том, что подстановочный знак распространяется на оба файла:
$ find /usr -name tclConfig.sh tkConfig.sh
Цитирование подстановочного знака предотвращает его преждевременное расширение.
Другая возможность заключается в том, что / usr или одно из его подкаталогов является символической ссылкой. find обычно не следует по ссылкам, поэтому вам может понадобиться опция -follow :
$ find /usr -follow -name '*.sh'