Linux에서 1 년이 지난 파일 삭제


18

그때까지 많은 파일이 여전히 시스템에 있고 더 이상 필요하지 않습니다. 적어도 1 년 된 모든 파일을 삭제하는 방법은 무엇입니까?

답변:


34

이 명령으로 할 수 있습니다

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

7
항상 {}in을 인용해야합니다 -exec(그래서 읽습니다 -exec rm "{}" \;). 이렇게하면 공백이 올바르게 처리됩니다 ... 그리고 -delete대신 함수를 사용할 수 있습니다 -exec.
Oli

1
@Oli Huh ??? (당신은 쉘 회전 점을 감안, 잘 될 수 없습니다 말했다 무엇 "{}"으로 {}그것을 전달하기 전에 find처음부터 한 후 find대체를 그것을 인용.이 {}경우에 제안 {}자신이 때로는 쉘에 의해 특별하게 처리 할 수있다 -에 무관 공백으로 처리하고 종종 {}인용 할 필요가 없습니다. 본인 스타일의 쉘에서 찾기를 호출 할 때 {}, 내부에 아무것도없는, 자체적으로 인수로 나타나는 경우 어떤 상황도 생각할 수 없습니다.
Eliah Kagan

1
@EliahKagan 예, find핸들 자체가 빠져 나가는 것으로 나타 났지만 스크립팅 중에는 나쁜 습관이 아닙니다. 아프지 않습니다.
Oli

2
@Oli 그러나 원칙적으로는 도움이되지 않습니다. 경우 find이스케이프 처리하지 않은, "{}"여전히 같은 효과가 없을 것 {}--just 어느 쪽도 아닌 두 작업, 작동합니다. 그것 {}"{}"동일하게 행동하는 것은 발견의 특별한 특징으로 인한 것이 아니며 그렇게 할 수도 없습니다. 다른 프로그램에 의해 확장됩니다 것과 쉘에 의해 확장됩니다 무엇을 혼동하는 것입니다 나쁜 버릇. 우리 모두는 때때로 그 실수를 저 지르지 만, 여전히 모범 사례가 아닌 실수입니다. ( {}인간이 그것이 중괄호 확장의 패턴은 아니지만 단어 분리와 관련이 없음을 알도록 돕기 위해 인용 할 수도 있습니다 .)
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.