
Como posso excluir diretórios usando o bash que não contêm diretórios chamados wav ou mp3? Eu uso o macOS Sierra.
find . -type d \! -exec test -e '{}/wav' \; -print
encontra os diretórios que não contêm diretórios wav. Como posso incluir mp3 neste comando? E como posso excluir os diretórios resultantes?
Minha biblioteca de música segue esta estrutura:
/Musik/<Artist>/<format>/<Artist---Album>/<Track_Titel.wav>
, onde o formato é wav ou mp3. Existem muitos diretórios sem nenhum arquivo de áudio, mas sim capas, por exemplo, portanto, não posso simplesmente procurar diretórios vazios para excluir aqueles diretórios que não contêm arquivos de áudio.
Responder1
Em primeiro lugar, antes de fazer isso,faça um backup dos seus arquivos.
Seriamente.
Para localizar e remover diretórios de artistas (e seu conteúdo, recursivamente) que não contêm diretórios diretamente (ouarquivos) intitulados wav
ou mp3
(casoconfidencial), tente o seguinte:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -print
Só depois que você tiverconfirmou a saídacorresponde aos diretórios que você espera que sejam excluídos(e verifiquei novamente seu backup)você deve então executar:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -exec rm -rf {} \;
Responder2
Para 2 testes, execute o teste duas vezes e, se ambos falharem, faça algo:
find . -type d -exec bash -c "test -f \"{}\"/*wav || test -f \"{}\"/*mp3 || test -d \"{}\"/* || rm -rf \"{}\"" \;