3

Мне нужно найти все каталоги, которые содержат определенный символ в их имени и распечатать их.

Так что, если у меня есть каталоги:

abc cde fgh

И я ищу "c", я должен получить:

abc 
cde

2 ответа2

6

Следующие команды выполняют требуемый запрос:

find -name "*c*" -type d
  • начинается с текущего каталога (не нужно указывать каталог в случае текущего каталога)
  • -name "*c*" - с именем содержит букву c
  • -type d - которые являются каталогом

Вы можете запустить команду в другом каталоге (/full/path/to/dir), используя:

find /full/path/to/dir -name "*c*" -type d

Больше информации nixCraft найти команду

1

Если globstar включен, вы можете использовать это

for d in **/*c*/; do echo $d; done

Первый ** будет соответствовать любым произвольным путям подкаталогов. Затем *c*/ с соответствующими папками с символом c в нем

Если он не включен, вы можете включить его с shopt -s globstar

  • globstar

    • Если установлено, шаблон ** используемый в контексте расширения имени файла, будет соответствовать всем файлам и нулю или более каталогов и подкаталогов. Если за шаблоном следует символ / , совпадают только каталоги и подкаталоги.

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