Як шукати всі підкаталоги, щоб знайти той із певним іменем?


13

Скажімо, у мене є каталог верхнього рівня, який називається, /dirі багато підкаталогів. Як шукати підкаталоги, /dirщоб знайти той, що називається x/x/dir/x/x/x/target?

Це питання схоже на, але не зовсім те, що я шукаю: знайти команду для певних підкаталогів .

Я не шукаю файли, а лише каталоги з певною назвою.

Відповіді:


18

Спробуйте find /dir -type d -name "your_dir_name".

Замініть /dirім'я свого каталогу та замініть "your_dir_name"ім'я, яке шукаєте.

-type dпідкаже findшукати лише каталоги.


1

Для більш загального рішення пошуку одного або декількох каталогів та пошуку в них чогось типу пошуку старих адрес електронної пошти у сховищах git дивіться наступну схему:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e 'my.old@email.address'

1
echo **/target

або щоб отримати один матч на рядок:

printf %s\\n **/target

Це працює з коробки в zsh. У bash, вам потрібно запустити shopt -s globstarспочатку, і будьте обережні, що це також проходить символічні посилання на каталоги. У ksh93 вам потрібно запустити set -o globstarперше.

Якщо ви хочете зіставляти лише каталоги або символьні посилання на каталоги, додайте трейлінг /(тобто **/target/). У zsh, щоб відповідати лише каталогів, але не символічним посиланням на каталоги, зробіть це **/target(/).

У будь-якій оболонці ви можете використовувати findкоманду:

find . -name target

Для Linux та Cygwin, .опція необов'язкова. Якщо ви хочете відповідати лише каталогів, додайте -type d.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.