Linuxで1年以上前のファイルを削除する


18

その時までに、多くのファイルがまだ私のシステムにあり、私はそれらをもう必要としません。

回答:


34

このコマンドでそれを行うことができます

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

いくつかの説明

/path/to/files* ファイルへのパスです。

-mtimeファイルが存在する日数を指定するために使用されます。+365は365日(1年)より古いファイルを検索します

-exec rmなどのコマンドを渡すことができます。


@Oli noteのおかげで編集->それを行うには:

find /path/to/files* -mtime +365 -delete

7
常に{}inを引用する必要があります-exec(読み取ります-exec rm "{}" \;)。これにより、スペースが適切に処理されるようになります...そして、の-delete代わりに関数を使用できます-exec
オリ

1
@Oli Huh ??? (シェル・ターンすることを考慮すると、右することはできません言ったこと"{}"{}に渡す前に、find最初の場所で、その後、findそれの代替が引用{}する場合には提案された{}自身が時々シェルによって特別に処理することができる-には何もしていました空白スペースで行う。そして、しばしば{}引用されている必要はありません。ボーンスタイルのシェルから検索を呼び出すときに、私は、少なくとも、どのような状況を考えることができない、する場合{}、何も内側で、引数、同じように、それ自体で登場引用する必要があります。できますか?)
エリアカガン14

1
@EliahKaganええ、findそれ自体はエスケープ処理を行いますが、スクリプト作成中にいるのは悪い習慣ではありません。痛くない。
オリ

2
@Oliしかし、それは原則としても役に立たない。findエスケープを処理しなかった場合"{}"でも、-と同じ効果がありますが、{}どちらも機能せず、どちらも機能しません。これ{}"{}"同じisn'tを振る舞う-とすることはできません-検索の特別な機能に起因します。いくつかの他のプログラムによって拡張する内容で、シェルによって展開されますどのような混乱している悪い癖。私たちは皆、時折その間違いを犯しますが、それは間違いであり、ベストプラクティスではありません。(人が{}ブレース拡張のパターンではないことを人間が理解できるように引用するかもしれませんが、それは単語分割とは無関係です。)
エリアカガン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.