Я использую это, чтобы получить список измененных файлов между двумя наборами изменений:
git diff --name-status <SHA1> <SHA2> | cut -f2
Попытайтесь заключить подстановочный знак в кавычки:
$ find /usr -name \*.sh
или:
$ find /usr -name '*.sh'
, Если у Вас, оказывается, есть файл, который соответствует *.sh в текущем рабочем каталоге, подстановочный знак будет расширен, прежде находят, видит его. Если бы у Вас, оказывается, есть файл, названный tkConfig.sh в Вашем рабочем каталоге, эти находят , команда расширилась бы до:
$ find /usr -name tkConfig.sh
, который только нашел бы файлы названными tkConfig.sh. Если бы у Вас был больше чем один файл, который соответствует *.sh, то Вы добрались бы, синтаксическая ошибка от [1 116] находят :
$ 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 /usr -follow -name '*.sh'
Для нахождения файлов на Ваших дисках наклон для использования "располагается" вместо этого, который мгновенен (изучает ежедневный созданный индекс), Вы, пример был бы:
locate '/usr*.sh'
В некоторых системах (Солярис, например), нет никакого действия по умолчанию, таким образом, необходимо добавить - команда печати.
find /usr -name '*.foo' -print