web-dev-qa-db-ja.com

Linuxで特定の日付より古いファイルを削除する

以下のコマンドを使用して、1年以上前のファイルを削除しました。

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

しかし、今、変更された時間が2014年1月1日より古いであるすべてのファイルを削除したい

Linuxでどうすればいいですか。

22
VRK

タイムスタンプをファイルとしてタッチし、それを参照ポイントとして使用できます。

例えば2014年1月1日の場合:

touch -t 201401010000 /tmp/2014-Jan-01-0000

find /path -type f ! -newer /tmp/2014-Jan-01-0000 | xargs rm -rf 

これは、findに使用している-newerスイッチがあるため機能します。

man findから:

-newer file
       File  was  modified  more  recently than file.  If file is a symbolic
       link and the -H option or the -L option is in effect, the modification time of the 
       file it points to is always used.
19
user559633

これは私のために働く:

find /path ! -newermt "YYYY-MM-DD HH:MM:SS" | xargs rm -rf
26
Paul Spaulding
find ~ -type f ! -atime 4|xargs ls -lrt

これにより、アクセスされたファイルが一覧表示されます4日以上、ホームディレクトリから検索します。

1
bunty

受け入れられた回答はファイルシステムを汚染し、それ自体が削除を提案します。そのため、結果をxargsにパイプしてからrmを発行する必要はありません。この答えはより効率的です

find /path -type f -not -newermt "YYYY:MM:DD HH:MI:SS" -delete
1
yoga