500 일보다 오래된 파일 삭제


10

2010 년의 파일이있는 디렉토리가 있습니다. 500 일보다 오래된 모든 파일을 삭제하고 싶습니다.

find /var/log/arc/* -type f -mtime +500 -delete {}\;      

그러나 나는 이것을 얻는다 :

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

내가 아는 것처럼 이것은 파일이 너무 많아서 find처리 할 수 ​​없음을 의미합니다. 그러나 +20003 년 이상을 넣더라도 여전히 이것을 얻습니다.

내가 여기서 잃어버린 것?


답변:


18

find입력으로 파일 목록이 필요 없는 누락되었습니다 . 문제는 glob /var/log/arc/*가 너무 많은 파일로 확장 된다는 것 입니다. 그러나 find기본적으로 하위 디렉토리로 되풀이되므로 glob를 전혀 사용할 필요가 없습니다.

find /var/log/arc/ -type f -mtime +500 -delete

-delete비표준 술어입니다. find구현에서 지원하지 않는 경우 다음을 사용할 수 있습니다.

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

대신에.


고맙지 만 지금 이것을 얻었다 : find: invalid predicate -delete'`
Garg

1
@Garg 먼저 죄송합니다. 방금 명령을 복사했지만 구문이 잘못되었음을 알지 못했습니다. 은 -delete고려하지 않습니다 {}. 업데이트를 참조하십시오. 그러나 오류 메시지에서 사용중인 버전이을 find지원하지 않는 것으로 보입니다 -delete. GNU를 사용 find하지 않는 경우 (대부분의 경우 Linux를 사용하지 않는 한), -exec -rm {} \;대신 사용해야 합니다.
terdon

감사합니다. -exec rm {} \;트릭을 수행하십시오.
Garg

1
하지 왜 @hobbs 나는 볼 수 없습니다 -exec되는 POSIX에 의해 정의 .
terdon

@ 내 실수.
홉스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.