재귀적으로 삭제되지 않는 찾기 및 rm 명령

재귀적으로 삭제되지 않는 찾기 및 rm 명령

오래된 폴더를 삭제하는 간단한 스크립트가 있습니다. 문제는 재귀적으로 삭제되지 않는다는 것입니다.

다음 명령은 다음과 같습니다.

find $PWD -maxdepth 5 -mtime +80 | xargs -I{} rm -Rvf {}

파일과 폴더를 제거하지만 갑자기 이미 삭제한 디렉터리에서 파일을 제거하려고 시도합니다.

서버가 실행 중입니다.CentOS, 폴더는 다음을 사용하여 마운트됩니다.NFS저장소에서.

우리는 무엇을 할 수 있나요?

답변1

rm이는 가 명령 에서 발견된 모든 파일 및 디렉터리 목록을 받기 때문에 발생합니다 find. 그리고 그 앞에 위치한 목록의 디렉토리와 파일을 재귀적으로 삭제했습니다.

저는 두 가지 솔루션을 제안할 수 있습니다.

  1. 종류재귀적 find결과:find $PWD -maxdepth 5 -mtime +80 | sort -r | xargs -I{} rm -Rvf {}
  2. -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 {} \;

그리고 저는 이것이 정말 최선의 방법이라고 생각합니다.

관련 정보