Как я могу удалить каталоги с помощью bash, которые не содержат каталогов с именами wav или mp3? Я использую macOS Sierra.
найти. -type d \! -exec test -e '{} / wav' \; -print
находит каталоги, не содержащие каталоги wav. Как я могу включить mp3 в эту команду? И как я могу удалить получившиеся каталоги?
Моя музыкальная библиотека имеет следующую структуру:
/ Musik /
, где формат - wav или mp3. Есть много каталогов без аудиофайлов, кроме обложек, например Таким образом, я не могу просто искать пустые каталоги, чтобы удалить те каталоги, которые не содержат аудиофайлов.
Прежде всего, прежде чем вы это сделаете, сделайте резервную копию ваших файлов.
Серьезно.
Для поиска и удаления каталогов исполнителей (и их содержимого, рекурсивно), которые не содержат напрямую каталоги ( или файлы) с названием wav
или mp3
( case чувствительный ), попробуйте следующее:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -print
Только после того, как вы подтвердите, что вывод соответствует каталогам, которые вы ожидаете удалить (и дважды проверили резервную копию) , если вы запустите:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -exec rm -rf {} \;
За 2 теста проведите тест дважды, и если оба они не удались, то сделайте что-нибудь:
find . -type d -exec bash -c "test -f \"{}\"/*wav || test -f \"{}\"/*mp3 || test -d \"{}\"/* || rm -rf \"{}\"" \;