지정된 디렉토리를 떠나 하위 디렉토리 제거

지정된 디렉토리를 떠나 하위 디렉토리 제거

특정 하위 디렉터리를 유지하면서 특정 폴더에 있는 모든 하위 디렉터리와 해당 콘텐츠를 삭제해야 합니다. bash나 쉘 스크립트를 사용하여 이를 수행할 수 있는 방법이 있습니까? 파일 구조는 아래와 같습니다.

container_dir
├── delete_this_dir
│   ├── file1.txt
│   └── file2.txt
├── delete_this_dir
│   ├── l1.txt
│   └── l2.txt
└── keep_this_dir
    ├── file1.txt
    ├── file2.txt
    └── file3.txt

답변1

배쉬에서는 다음을 사용하십시오.외부 전역 변수유지할 디렉터리 제외:

shopt -s extglob
rm -rf container_dir/!(keep_this_dir)

답변2

이 컨테이너_디렉터리를 백업하고 다음을 시도하십시오.

find $container_dir/* -path $keep_this_dir -prune -o -name "*" -type d -exec rm -rfv {} \;

하지만 더 간단한 백업 솔루션을 사용하는 것이 좋습니다.

답변3

이름만으로 유지할 디렉터리를 결정하는 경우 다음을 수행할 수 있습니다.

cd container_dir && \
find . -maxdepth 1 -type d ! -name . ! -name keep_this_dir -exec rm -r {} +

즉, 컨테이너 디렉터리로 전환하고 find거기에서 시작하지만 깊이 수준 1까지만 가능하며 해당 수준의 디렉터리에서만 검색합니다. 얻은 디렉토리 풀에서는 find두 개의 디렉토리, 즉 Container_dir 및 keep_this_dir만 유지됩니다. 나머지는 학살되기를 기다리고 있습니다.

관련 정보