7

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

Например , я хочу , чтобы найти все каталоги , начиная с буквой a для файла или каталога , начиная с b

3 ответа3

10

Попробуйте найти в находке:

find . -type d -name "a*" -exec find {} -name "b" \;

Начиная с текущего каталога (.), Find будет искать все каталоги, начинающиеся с буквы рекурсивно. Для каждого найденного каталога он будет искать в нем файл с именем b.

Если вы хотите, чтобы он просматривался только в папках, начинающихся с a, а в этих папках a * каталогов не было, используйте maxdepth:

find . -type d -name "a*" -exec find {} -maxdepth 1 -name "b" \;

избавиться от ошибок:

find . -type d -name "a*" 2> /dev/null -exec find {} -maxdepth 1 -name "b" \;
1

Вы также можете использовать find -regex ...

find -regex .*/a.*/b
1

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

В дополнение к решению, предоставленному Джоном Т. , я также обнаружил, что вы можете исключить каталоги с помощью переключателя обрезки (я должен был прочитать страницы справочника раньше, я думаю, хе-хе).

Так, например, если я хочу найти во всех каталогах файл или каталог "b", кроме каталогов, начинающихся с "a", я могу сделать это

find . -path 'a*' -prune -o -name "b" -print

Бинг

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