답변:
이 명령으로 할 수 있습니다
find /path/to/files* -mtime +365 -exec rm {} \;
일부 설명
/path/to/files*
파일의 경로입니다.
-mtime
파일의 일 수를 지정하는 데 사용됩니다. +365는 1 년인 365 일보다 오래된 파일을 찾습니다.
-exec
rm과 같은 명령을 전달할 수 있습니다.
@Oli note-> 덕분에 편집 할 수 있습니다.
find /path/to/files* -mtime +365 -delete
"{}"
으로 {}
그것을 전달하기 전에 find
처음부터 한 후 find
대체를 그것을 인용.이 {}
경우에 제안 {
과 }
자신이 때로는 쉘에 의해 특별하게 처리 할 수있다 -에 무관 공백으로 처리하고 종종 {}
인용 할 필요가 없습니다. 본인 스타일의 쉘에서 찾기를 호출 할 때 {}
, 내부에 아무것도없는, 자체적으로 인수로 나타나는 경우 어떤 상황도 생각할 수 없습니다.
find
핸들 자체가 빠져 나가는 것으로 나타 났지만 스크립팅 중에는 나쁜 습관이 아닙니다. 아프지 않습니다.
find
이스케이프 처리하지 않은, "{}"
여전히 같은 효과가 없을 것 {}
--just 어느 쪽도 아닌 두 작업, 작동합니다. 그것 {}
과 "{}"
동일하게 행동하는 것은 발견의 특별한 특징으로 인한 것이 아니며 그렇게 할 수도 없습니다. 다른 프로그램에 의해 확장됩니다 것과 쉘에 의해 확장됩니다 무엇을 혼동하는 것입니다 나쁜 버릇. 우리 모두는 때때로 그 실수를 저 지르지 만, 여전히 모범 사례가 아닌 실수입니다. ( {}
인간이 그것이 중괄호 확장의 패턴은 아니지만 단어 분리와 관련이 없음을 알도록 돕기 위해 인용 할 수도 있습니다 .)
{}
in을 인용해야합니다-exec
(그래서 읽습니다-exec rm "{}" \;
). 이렇게하면 공백이 올바르게 처리됩니다 ... 그리고-delete
대신 함수를 사용할 수 있습니다-exec
.