Як вказує інша відповідь, ви можете спробувати знайти всі каталоги з назвою testта видалити їх
find -name "test" -type d -delete
Я зіткнувся з деякими проблемами з перехресною сумісністю на Mac, тому я використав цю еквівалентну команду:
find -path "*/test" -type d -delete
- -path : шукає шаблон у повністю кваліфікованому імені файлу.
У будь-якому випадку, проте, якщо будь-який із названих каталогів testмає в собі файли, findскаржиться на те Directory is not empty, що і не вдасться видалити каталог.
Якщо ви мали намір видалити всі файли, включаючи testкаталог, ми можемо використовувати той самий трюк, щоб видалити всі файли з каталогів, названих testпершими.
find -path "*/test/*" -delete
Шаблон: "*/test/*"гарантуватиме, що ми видаляємо лише файли всередині каталогу з іменем /test/. Як тільки каталоги будуть порожніми, ми можемо продовжувати та видаляти каталоги за допомогою першої команди:
find -path "*/test" -type d -delete
Приклад:
$ tree
.
├── mytest
│ └── test
│ └── blah.txt
├── test
│ ├── bar.jpg
│ └── dir
│ └── bar.bak
└── testdir
└── baz.c
5 directories, 4 files
$ find -path "*/test" -type d -delete
$ tree
.
├── mytest
│ └── test
├── test
└── testdir
└── baz.c
4 directories, 1 file
$ find -name "test" -type d -delete
$ tree
.
├── mytest
└── testdir
└── baz.c
2 directories, 1 file
+в знахідці. Я не мав уявлення, напевно хотів би, що це знав давно.