답변:
이것은 당신을 위해 재귀 적으로 할 것입니다 :
find /path/to/base/dir/* -type d -ctime +10 -exec rm -rf {} \;
설명:
find
: 파일 / 디렉토리 / 링크 등을 찾기위한 unix 명령/path/to/base/dir
: 검색을 시작할 디렉토리입니다.-type d
: 디렉토리 만 찾습니다-ctime +10
: 수정 시간이 10 일보다 오래된 것만 고려하십시오.-exec ... \;
: 발견 된 각 결과에 대해 다음 명령을 수행하십시오. ...
rm -rf {}
: 재귀 적으로 디렉토리를 강제로 제거합니다. {}
찾기 결과가 이전 부분에서로 대체됩니다 어디 부분이다.또는 다음을 사용하십시오.
find /path/to/base/dir/* -type d -ctime +10 | xargs rm -rf
다음과 같은 이유로 조금 더 효율적입니다.
rm -rf dir1 dir2 dir3 ...
반대로 :
rm -rf dir1; rm -rf dir2; rm -rf dir3; ...
-exec
방법 에서와 같이 .
현대 버전으로 find
, 당신은을 대체 할 수 ;
와 +
그리고 그것은에 해당 할 것입니다 xargs
각 간부 시스템 호출에 맞는 많은 파일로 통과, 당신을 위해 전화 :
find . -type d -ctime +10 -exec rm -rf {} +
-mtime
권한 변경이 아닌 콘텐츠 변경을 확인하는 것이 나에게 더 좋았습니다. 그렇지 않으면 완벽했습니다.
find /path/to/base/dir/*
.
-mindepth 1
(대신 /path/to/folder/*
) 를 사용하는 것이 좋습니다 .
/path/to/base
예를 들어 아래의 모든 하위 디렉토리를 삭제하려면
/path/to/base/dir1
/path/to/base/dir2
/path/to/base/dir3
하지만 루트를 삭제하지 않으려면 /path/to/base
추가 -mindepth 1
및 -maxdepth 1
옵션 을 추가해야합니다.이 옵션은 아래의 하위 디렉토리에만 액세스합니다./path/to/base
-mindepth 1
/path/to/base
일치 하는 루트 를 제외합니다 .
-maxdepth 1
됩니다 만 바로 아래 서브 디렉토리와 일치 /path/to/base
등을 /path/to/base/dir1
, /path/to/base/dir2
그리고 /path/to/base/dir3
하지만하지 않습니다 재귀 방식으로이 목록의 하위 디렉토리. 따라서 다음 예제 서브 디렉토리는 나열되지 않습니다.
/path/to/base/dir1/dir1
/path/to/base/dir2/dir1
/path/to/base/dir3/dir1
기타 등등.
따라서 /path/to/base
10 일보다 오래된 모든 하위 디렉토리를 삭제합니다 .
find /path/to/base -mindepth 1 -maxdepth 1 -type d -ctime +10 | xargs rm -rf
find
-delete
작동을 지원 합니다.
find /base/dir/* -ctime +10 -delete;
파일이 10 일 이상 더 오래 걸렸다는 생각이 들었습니다. 시도하지 않은 사람은 의견을 확인할 수 있습니다.
여기에서 가장 많이 투표 된 솔루션이 누락 -maxdepth 0
되어 rm -rf
삭제 후 모든 하위 디렉토리를 호출 합니다. 그것은 말이되지 않으므로 제안합니다.
find /base/dir/* -maxdepth 0 -type d -ctime +10 -exec rm -rf {} \;
디렉토리가 비어 있지 않다고 불평 -delete
하기 -maxdepth 0
때문에 위 의 솔루션은 사용하지 않습니다 find
. 대신 -depth
아래에서 위로 암시 하고 삭제합니다.
-delete
작품 을 확인할 수 있지만, 당신이 말했듯이 빈 디렉토리를 삭제하는 데만 사용할 수 있습니다 rmdir
.
위에 제공된 스크립트와 특히 파일 및 폴더 이름에 줄 바꿈이나 공백이있는 경우 다른 스크립트를 사용 하여이 권리를 얻는 데 어려움을 겪고있었습니다.
마침내 tmpreaper가 우연히 발견되었으며 지금까지 우리에게 꽤 잘 작동했습니다.
tmpreaper -t 5d ~/Downloads
tmpreaper --protect '*.c' -t 5h ~/my_prg
원본 소스 링크
디렉토리를 재귀 적으로 확인하고 나열하는 test와 같은 기능이 있습니다. 삭제하는 동안 심볼릭 링크, 파일 또는 디렉토리를 삭제하는 기능 및 특정 패턴에 대한 보호 모드
또는
rm -rf `find /path/to/base/dir/* -type d -mtime +10`
업데이트되고 더 빠른 버전 :
find /path/to/base/dir/* -mtime +10 -print0 | xargs -0 rm -f
xargs --show-limits
.
-print0
/ -0
는 특별한 쉘 문자를 처리하지 않습니까?
xargs
버전이 @mpen 인 것이 맞지만 첫 번째 줄은 그렇지 않습니다.
find
그때 이름을 보지 않고 그것을 할 수 있기 때문에 ...