Как указывает другой ответ, вы можете попытаться найти все каталоги с именем 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