Почему «find» не показывает этот файл?


21

Используя findс grep, можно найти файлы, которые соответствуют шаблону:

# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log

Однако, используя findтолько первый файл не найден:

# find . -name error*
./error_log
./includes/classes/error_log

Почему не findнаходит errors.htmlфайл, когда не используется с grep? Как findиспользуется, чтобы показать этот файл, а?

Ответы:


42

Вам нужно процитировать ваш аргумент, error*потому что оболочка его расширяет. Итак, что вы на самом деле сейчас выполняете find -name error_log, так это то, к чему оболочка может его развернуть ( error_logв вашем текущем каталоге есть файл ).

find . -name 'error*'

Является ли правильный вызов для вашего варианта использования.


12
альтернативное написание find -name error\*- на одну клавишу меньше нажимать;) это имеет тот же эффект, что *передается в виде буквенной звездочки в команду find и не расширяется вашей оболочкой
женеч

3
Если возникают проблемы с оболочкой (как она интерпретирует вашу командную строку и передает все аргументы и параметры фактической команде), повторно запустите команду, добавив ее к echoкоманде. Итак, если бы вы запустили echo find . -name error*его, то find . -name error_log
выдали
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.