Как я могу искать в каталогах, начинающихся с определенной буквы, командой Linux find.
Например , я хочу , чтобы найти все каталоги , начиная с буквой a
для файла или каталога , начиная с b
Как я могу искать в каталогах, начинающихся с определенной буквы, командой Linux find.
Например , я хочу , чтобы найти все каталоги , начиная с буквой a
для файла или каталога , начиная с b
Попробуйте найти в находке:
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" \;
Вы также можете использовать find -regex ...
find -regex .*/a.*/b
Просто быстрое обновление для людей, которые могут закончить с этим вопросом.
В дополнение к решению, предоставленному Джоном Т. , я также обнаружил, что вы можете исключить каталоги с помощью переключателя обрезки (я должен был прочитать страницы справочника раньше, я думаю, хе-хе).
Так, например, если я хочу найти во всех каталогах файл или каталог "b", кроме каталогов, начинающихся с "a", я могу сделать это
find . -path 'a*' -prune -o -name "b" -print
Бинг