Як вказує інша відповідь, ви можете спробувати знайти всі каталоги з назвою 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
+
в знахідці. Я не мав уявлення, напевно хотів би, що це знав давно.