bash: 주어진 문자열을 포함하지 않는 디렉토리 삭제

bash: 주어진 문자열을 포함하지 않는 디렉토리 삭제

bash를 사용하여 wav 또는 mp3라는 디렉터리를 포함하지 않는 디렉터리를 어떻게 삭제합니까? 저는 macOS Sierra를 사용합니다.

find . -type d \! -exec test -e '{}/wav' \; -printwav 디렉토리를 포함하지 않는 디렉토리를 찾으십시오. 이 명령에 mp3를 어떻게 포함시킬 수 있나요? 생성된 디렉터리를 어떻게 삭제하나요?

내 음악 라이브러리는 다음 구조를 따릅니다. /Musik/<Artist>/<format>/<Artist---Album>/<Track_Titel.wav>여기서 형식은 wav 또는 mp3입니다. 예를 들어 오디오 파일이 없지만 덮어쓰여진 디렉토리가 많기 때문에 오디오 파일이 포함되지 않은 디렉토리를 삭제하기 위해 빈 디렉토리를 검색할 수는 없습니다.

답변1

먼저 이 작업을 수행하기 전에,파일을 백업하세요.

진지하게.


디렉토리(또는파일) 제목 wav또는 mp3(케이스예민한) 다음을 시도해 보세요.

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

2개 테스트의 경우 테스트를 두 번 실행하고 둘 다 실패하면 다음을 수행합니다.

find . -type d -exec bash -c "test -f \"{}\"/*wav || test -f \"{}\"/*mp3 || test -d \"{}\"/* || rm -rf \"{}\"" \;

관련 정보