Назад | Перейти на главную страницу

Можно ли использовать grep просто для поиска файлов в структуре каталогов?

Мне нравится использовать grep, но иногда я просто хочу найти имена файлов в дереве каталогов, но не хочу, чтобы grep открывал файлы и выполнял поиск внутри них. Может ли grep это сделать?

На этот вопрос есть много ответов, но наиболее «правильный» традиционный ответ для Unix - использовать find (1):

find / -type f -name foo\*

найдет каждый файл в текущем каталоге с именем, начинающимся с foo

Попробуйте использовать регулярное выражение, например

ls -R |grep ^a

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

Однако это не включает путь.

Есть много способов найти файлы в Linux. На мой взгляд, лучше всего два. Найти и найти »найти'намного мощнее, чем найти. У команды find есть одно ограничение - скорость, с которой она дает вам результаты поиска. Эта проблема решается командой locate. который хранит в себе локальное кэшированное дерево всего каталога (которое создается вручную с помощью команды UPDATEDB), и когда вы хотите найти файл, просто используйте «найти имя файла», и вы получите результат мгновенно. когда проблема в скорости, используйте команду locate, для чего-либо еще используйте команду find.

также вы можете использовать найти команда

поэтому сначала вы должны обновить locate Db, выполнив обновленоb команда (обратите внимание, что для завершения может потребоваться некоторое время)

чем бежать

locate foo*

Вы получите полный путь к файлу