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

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

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

3 ответа

Решение

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

находить. -тип d -name "a*" -exec find {} -имя "b" \;

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

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

находить. -тип d -name "a*" -exec find {} -maxdepth 1 -имя "b" \;

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

находить. -тип d -name "a*" 2> /dev/null -exec find {} -maxdepth 1 -имя "b" \;

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

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

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

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

Бинг

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

find -regex .*/a.*/b
Другие вопросы по тегам