태그 보관물: timestamps

timestamps

X 일보다 오래된 파일 삭제 + 5 일이 지난 파일을 삭제하는 명령을

폴더에서 5 일이 지난 파일을 삭제하는 명령을 찾았습니다.

find /path/to/files* -mtime +5 -exec rm {} \;

그러나 해당 폴더의 하위 디렉토리에 대해서도 어떻게합니까?



답변

rm으로 파이핑 할 때 특수 파일 이름 (공백, 따옴표)에주의하십시오.

안전한 대안 인 -delete 옵션이 있습니다.

find /path/to/directory/ -mindepth 1 -mtime +5 -delete

즉, 별도의 rm 호출이 없으므로 파일 이름에 대해 걱정할 필요가 없습니다.

교체 -delete-depth -print당신이 (실행하기 전에이 명령을 테스트하는 -delete의미 -depth).


답변

파일이 너무 많으면이 명령이 작동하지 않습니다. 다음과 같은 오류가 발생합니다.

bash: /usr/bin/find: Argument list too long

명령 행 길이에 대한 exec 시스템 호출 한계를 초과했음을 의미합니다. rm을 그런 식으로 실행하는 대신 xargs 를 사용하는 것이 훨씬 효율적 입니다. 작동하는 예는 다음과 같습니다.

find /root/Maildir/ -mindepth 1 -type f -mtime +14 | xargs rm

이렇게하면 / root / Maildir / 아래에서 14 일 전에 수정 된 모든 파일 (유형 f)이 재귀 적으로 더 깊이 제거됩니다 (마음 1). 추가 옵션에 대해서는 찾기 매뉴얼을 참조하십시오 .


답변

그것은 동일합니다. 파일의 접두사가 아닌 부모 디렉토리 만 제공하면됩니다. 귀하의 예에서는 다음과 같습니다.

find /path/to -type f -mtime +5 -exec rm {} \;

5 일이 지난 파일 /path/to과 그 하위 디렉토리 가 모두 삭제됩니다 .

빈 하위 디렉토리를 삭제하려면 위의 @Costas 주석을 참조하십시오.