Как я могу рекурсивно найти все файлы в текущих и подпапках на основе подстановочных знаков?

Как я могу рекурсивно найти все файлы в текущих и подпапках на основе подстановочных знаков?

971
задан 06 мая '11 в 2:01
источник поделиться
9 ответов

Используйте find для этого:

find . -name "foo*"

find нужна начальная точка, а . (точка) указывает на текущий каталог.

1459
ответ дан 06 мая '11 в 2:03
источник

Поиск трубопроводов в grep часто более удобен; он дает вам полную силу регулярных выражений для произвольного сопоставления подстановочных знаков.

Например, чтобы найти все файлы с регистрозависимой строкой "foo" в имени файла:

~$ find . -print | grep -i foo
135
ответ дан 15 авг. '12 в 9:56
источник

find найдет все файлы, соответствующие шаблону:

find . -name "*foo"

Однако, если вы хотите изображение:

tree -P "*foo"

Надеюсь, это поможет!

87
ответ дан 06 мая '11 в 2:15
источник
find -L . -name "foo*"

В некоторых случаях мне нужен параметр -L для обработки символических ссылок каталога. По умолчанию символические ссылки игнорируются. В таких случаях это было довольно запутанно, так как я бы сменил каталог на подкаталог и увидел файл, соответствующий шаблону, но find не вернул имя файла. Использование -L решает эту проблему. Символьные параметры ссылок для поиска: -P -L -H

10
ответ дан 14 янв. '17 в 5:47
источник

Если оболочка поддерживает расширенное подтачивание (включите ее: shopt -s globstar), вы можете использовать:

echo **/*foo*

чтобы найти любые файлы или папки рекурсивно. Это поддерживается Bash 4, zsh и аналогичными оболочками.

10
ответ дан 13 янв. '17 в 19:23
источник
find <directory_path>  -type f -name "<wildcard-match>"

В подстановочном матче вы можете указать строку, которую вы хотите сопоставить, например. *.c(для всех файлов c)

8
ответ дан 05 февр. '17 в 16:32
источник

для поиска файлов
find / -xdev -name settings.xml → весь компьютер
find ./ -xdev -name settings.xml → текущий каталог и его подкаталог

для файлов с расширением типа

find . -type f -name "*.iso"
2
ответ дан 31 мая '17 в 11:47
источник

Вы можете использовать:

# find. -type f -name 'text_for_search'

Если вы хотите использовать использование REGX -iname

# find. -type f -iname 'text_for_search'

1
ответ дан 29 окт. '17 в 19:09
источник

Стандартный способ поиска рекурсивного файла и доступный в большинстве случаев

find . -name "filepattern"

Он начинает рекурсивное перемещение для имени файла или шаблона из текущего каталога, в котором вы находитесь. С помощью команды find вы можете использовать подстановочные знаки и различные ключи, чтобы просмотреть полный список параметров, введите

man find

или если страницы руководства недоступны в вашей системе

find --help

Однако есть более современные и более быстрые инструменты, которые можно найти, которые перемещаются по всей вашей файловой системе и индексируют ваши файлы. Один из таких распространенных инструментов - локализовать или сложить /mlocate, вы должны проверить руководство своей ОС на том, как его установить, и после его установки ему необходимо запустить базу данных, если установка script не делает этого для вас, это можно сделать вручную, набрав

sudo updatedb

И, чтобы использовать его для поиска определенного типа файла

locate filename

Или, чтобы искать имя файла или patter из текущего каталога, вы можете ввести:

 pwd | xargs -n 1 -I {} locate "filepattern"

Он будет просматривать свою базу данных файлов и быстро распечатывать имена путей, соответствующие шаблону, который вы набрали. Чтобы просмотреть полный список вариантов локализации, введите: locate --help или man locate

Кроме того, вы можете настроить локацию для обновления базы данных в запланированные сроки с помощью задания cron, поэтому пример cron, который обновляет db в 1:00, будет выглядеть следующим образом:

0 1 * * * updatedb

Эти задания cron должны быть настроены с помощью root, так как updatedb нуждается в привилегиях root для перемещения всей файловой системы.

1
ответ дан 09 авг. '17 в 9:27
источник

Другие вопросы по меткам или Задайте вопрос