Почему не делает **, находят **, находят что-нибудь?

Я использую это, чтобы получить список измененных файлов между двумя наборами изменений:

git diff --name-status <SHA1> <SHA2> | cut -f2
17
задан Mark Harrison 25 August 2008 в 15:00
поделиться

3 ответа

Попытайтесь заключить подстановочный знак в кавычки:

$ 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'
52
ответ дан 30 November 2019 в 10:05
поделиться

Для нахождения файлов на Ваших дисках наклон для использования "располагается" вместо этого, который мгновенен (изучает ежедневный созданный индекс), Вы, пример был бы:

locate '/usr*.sh'
7
ответ дан 30 November 2019 в 10:05
поделиться

В некоторых системах (Солярис, например), нет никакого действия по умолчанию, таким образом, необходимо добавить - команда печати.

find /usr -name '*.foo' -print
15
ответ дан 30 November 2019 в 10:05
поделиться