Как я могу искать в каталогах, начиная с определенной буквы?
Как я могу искать в каталогах, начинающихся с определенной буквы, командой 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