파일 X, Y 및 Z를 제외한 하위 폴더의 모든 파일 및 하위 폴더 삭제

파일 X, Y 및 Z를 제외한 하위 폴더의 모든 파일 및 하위 폴더 삭제

파일이 많아요그리고특정 폴더 내의 하위 폴더는 모두 삭제하고 싶지만 X, Y, Z 파일은 유지하고 싶습니다.

다음과 같이 할 수 있는 방법이 있나요?

rm * | but NOT grep | X or Y or Z

답변1

rm을 사용하는 대신 사용하는 것이 더 편리할 수 있습니다.찾다. 이와 같은 명령은 "file"이라는 파일을 제외한 모든 항목을 삭제합니다.

find . \! -name 'file' -delete

많은 버전에서 와일드카드 및 정규식 일치를 지원할 수 있어야 합니다.

find의 출력을 rm으로 파이프할 수도 있습니다.

find . \! -name '*pattern*' -print0 | xargs --null rm 

답변2

zsh를 사용하고, 연산자를 setopt EXTENDED_GLOB사용하십시오 ~(와는 별개로)

rm -- *~(x|y|z)

OR ^연산자(부정):

rm -- ^(x|y|z)

그러나 파일을 다른 곳으로 옮기고 모든 것을 삭제해야 할 수도 있습니다. Enter 키를 너무 일찍 누르는 것처럼 손가락으로 스와이프하는 것이 훨씬 안전합니다.

답변3

최신 버전의 bash에는 extglob원하는 작업을 수행하기 위한 구문을 제공하는 셸 옵션이 있습니다(설치한 버전에 해당 기능이 있는지 확인하려면 "경로 이름 확장" 아래의 매뉴얼 페이지를 확인하세요).

$ shopt -s extglob  # turn on extended globbing
$ rm !(X|Y|Z)

테스트하려면 먼저 삭제할 파일 목록이 예상한 것과 일치하는지 확인하는 rm것이 좋습니다.echo

답변4

보관하고 싶은 파일을 이동하세요. 한 단계 위로 올라가서 폴더를 삭제하세요. 폴더를 다시 만들고 해당 파일을 다시 이동하십시오.

관련 정보