오래된 폴더를 삭제하는 간단한 스크립트가 있습니다. 문제는 재귀적으로 삭제되지 않는다는 것입니다.
다음 명령은 다음과 같습니다.
find $PWD -maxdepth 5 -mtime +80 | xargs -I{} rm -Rvf {}
파일과 폴더를 제거하지만 갑자기 이미 삭제한 디렉터리에서 파일을 제거하려고 시도합니다.
서버가 실행 중입니다.CentOS, 폴더는 다음을 사용하여 마운트됩니다.NFS저장소에서.
우리는 무엇을 할 수 있나요?
답변1
rm
이는 가 명령 에서 발견된 모든 파일 및 디렉터리 목록을 받기 때문에 발생합니다 find
. 그리고 그 앞에 위치한 목록의 디렉토리와 파일을 재귀적으로 삭제했습니다.
저는 두 가지 솔루션을 제안할 수 있습니다.
- 종류재귀적
find
결과:find $PWD -maxdepth 5 -mtime +80 | sort -r | xargs -I{} rm -Rvf {}
-delete
외부 도구 대신 옵션을 사용하십시오rm
.find $PWD -maxdepth 5 -mtime +80 -delete
UPD.1 제안한대로@디미타르추가 -type d
하면 find는 디렉토리에서만 작동합니다. 더 빠를 수도 있지만 이 경우 $PWD
디렉터리 의 오래된 파일을 정리하지 않습니다 .
find $PWD -maxdepth 5 -mtime +80 -type d | xargs -I{} rm -Rvf {}
UPD.2제안한대로@ezra-s당신은 없이 그것을 할 수 있습니다 xargs
:
find $PWD -maxdepth 5 -mtime +80 -exec rm -Rvf {} \;
그리고 저는 이것이 정말 최선의 방법이라고 생각합니다.