![지정된 파일을 삭제하지 않고 디렉터리의 파일 삭제를 취소하는 방법](https://linux55.com/image/173907/%EC%A7%80%EC%A0%95%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%82%AD%EC%A0%9C%EB%A5%BC%20%EC%B7%A8%EC%86%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
내 디렉토리에 이러한 파일이 있다고 가정해 보겠습니다.
├── __init__.py
├── __init__.pyc
├── __pycache__
├── recognizer.wsgi
├── requirements.txt
├── src
└── upld
upld
그 안에서 디렉토리를 제외한 모든 것을 삭제하고 싶습니다 . 이 작업을 수행하는 더 빠르고 좋은 방법이 있는지 궁금합니다.
감사해요.
답변1
find . -path ./upld -prune -o ! -path . -print
find
이는 하위 디렉터리를 포함하여 현재 디렉터리의 모든 항목을 삭제 하는 데 사용됩니다 . 단, 해당 경로는 ./upld
삭제되지 않습니다. (초기 검색 경로에서 건너뛰려는 콘텐츠의 전체 상대 경로여야 한다는 점에 유의하세요.)
실행하고 출력을 확인한 -print
다음 -delete
.
관련 디렉터리의 상위 디렉터리에서 보안 옵션:
mkdir newdir
mv olddir/upld newdir
rm -rf olddir
mv newdir olddir
즉, upld
안전을 위해 하위 디렉터리를 다른 곳으로 이동한 다음 이전 디렉터리를 완전히 삭제하세요.
답변2
당신이 그것을 사용한다고 가정하면 적어도 몇 가지 방법이 있습니다 bash
. 먼저 ls
또는 을 사용하여 수행 echo
하고 결과에 만족하면 다시 시도하는 것이 좋습니다 rm
.
1 삭제하려는 항목을 명확하게 설명하세요. 예를 들면 다음과 같습니다.
ls -d [_a-s]*
2 무엇을 유지하고 싶은지 명확하게 설명하세요. 예를 들면 다음과 같습니다.
shopt -s extglob # just once per session
ls -d !(upld)
bash 패턴 일치에 대한 자세한 내용은 다음에서 확인할 수 있습니다.여기.