하나를 제외한 모든 하위 디렉터리 삭제

하나를 제외한 모든 하위 디렉터리 삭제

현재 디렉터리 아래에 여러 개의 하위 디렉터리가 있고 그 중 하나는 A라고 가정합니다.

Bash를 사용하여 A를 제외한 모든 하위 디렉터리를 삭제하는 방법은 무엇입니까?

답변1

Bash는 글로빙을 확장했습니다(첫 번째 테스트 후 에코 제거).

shopt -s extglob
echo rm -rf !(A)

답변2

find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;

답변3

는 어때:

mv A /tmp/
rm * -rf
mv /tmp/A .

이렇게 하면 다른 명령의 오타로 인한 "무서움"을 피할 수 있습니다.

주의해주세요위의 rm * -rf 명령 실행 시 루트(/) 폴더에 있지 않도록 합니다.

답변4

나는 보통 먼저 올바른 결과를 얻는 ls 명령을 실행하여 이 작업을 수행합니다. 나는 유닉스 컴퓨터에 있지 않지만 다음과 같습니다.

ls -lda "[^A]"

제대로 이해했다면 명령으로 파이프하세요.

ls -lda "[^A]" | xargs rm -rf

정규 표현식이 잘못된 경우 위를 자유롭게 편집하세요.

관련 정보