アーカイブを間違ったフォルダーに抽出し、新しく抽出したファイルを移動または削除したい場合があります。
コマンドラインからこれを行う最も簡単な方法は何ですか?どういうわけか、抽出時間よりも新しいすべてのファイルを検索して、それをrmにパイプできますか?
ありがとう
編集:コメントに記載されているように、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
_
検索の別の方法:
$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f
ここで、+ 30は保持したい日数です。