web-dev-qa-db-ja.com

Linuxで特定の日付より後のファイルを削除するにはどうすればよいですか?

アーカイブを間違ったフォルダーに抽出し、新しく抽出したファイルを移動または削除したい場合があります。

コマンドラインからこれを行う最も簡単な方法は何ですか?どういうわけか、抽出時間よりも新しいすべてのファイルを検索して、それをrmにパイプできますか?

ありがとう

4
Tarski

編集:コメントに記載されているように、tarは、アーカイブ内の日付と一致するように抽出されたファイルのmtimeとctimeを変更するため、この最初の方法は_-m_フラグが抽出中に使用されました。最後の方法が最適ですが、ファイル名が衝突した場合、必要なファイルが削除される可能性があります。

findは_-newer_ fileフラグをサポートし、fileより新しいファイルを検索するように指定します。 touchには、ファイルのアクセス/変更時間を変更するための-t引数があります。したがって、午後7時25分30秒頃に発生したおっとを修正するには:

_$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp
_

そして、それが正しいファイルを表示したと確信している場合:

_$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v
_

別の方法は、抽出したアーカイブにリストされているすべてのファイルを削除することです。

_$ tar tfz whoops.tar.gz | xargs rm -v
_
12

検索の別の方法:

$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f

ここで、+ 30は保持したい日数です。

2
Chris_K