20

Есть ли команды для поиска вашего Mac с помощью терминала? Я пытался использовать usin grep для поиска, но он кажется не отвечающим и ничего не появляется.

Например, я набрал бы "grep Files" (имя папки), и он просто печатает пустую строку, и ничего не происходит.

4 ответа4

21

Если вы просто хотите найти файлы с определенным именем, используйте find

Справочную страницу можно найти ЗДЕСЬ или набрав man find в терминале.

По сути, find рекурсивно ищет заданные вами критерии соответствия файла. Самый простой пример:

find . -name file_name -print

При этом будет выполнен поиск файла с именем "имя_файла", начиная с текущего каталога и выполнив поиск ниже, и распечатает файлы с этим именем.

find ~ -name ".DS_Store" -delete

Это найдет все.DS_Store файлы и удалить их.

Вы можете искать по имени, регулярному выражению, дате. Вы можете работать с файлом любым способом Unix с помощью предиката -exec .

Вы также можете использовать поиск как начало более сложного набора действий. Пример:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Найдут все файлы с расширениями .m4a или .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Даст вам количество этих файлов.

19

Вы также можете использовать команду mdfind для выполнения поиска с помощью Spotlight. Больше информации здесь.

Используйте mdfind -name searchterm для получения файлов с именем searchterm . Используйте mdfind searchterm для поиска по имени файла и его содержимому.

3

Если вы хотите выполнить поиск по всей папке, просто используйте -r на grep:

grep -r pattern folder/to/search

С помощью find вы также можете использовать xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

или чтобы убедиться, что вы ищете два файла одновременно и, следовательно, указаны имена файлов:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern
2

grep ожидает как шаблон, так и спецификацию файла. Если один из них отсутствует, он использует то, что передается в качестве шаблона, и ожидает поиска данных через стандартный ввод.

Если вы хотите использовать более сложную спецификацию файлов, используйте find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .