Linuxコマンドを使用している月から月までの間に古いファイルを削除する方法はありますか?
私がやりたいことの例は次のとおりです。
rm oldfile.txt april until may 2012
私の問題を解決する方法はありますか?
ありがとう
Linuxコマンドを使用している月から月までの間に古いファイルを削除する方法はありますか?
私がやりたいことの例は次のとおりです。
rm oldfile.txt april until may 2012
私の問題を解決する方法はありますか?
ありがとう
を使用した3ステップのプロセスfind
:
touch -d '2012-04-01 00:00:00' STARTING
touch -d '2012-04-30 23:59:59' STOPPING
find . -type f -newer STARTING -not -newer STOPPING -exec rm {} \;
編集:これにより、4月から5月の間にファイルが削除されることに注意してください。したがって、2012年4月1日から2012年4月30日までのファイルは削除されます。また、実際に削除する前に、削除するファイルのリストを表示することをお勧めします。これを行うには、に変更rm
しls -la
ます。
awkは、1か月(または一連の月)からファイルを削除するのに役立ちます
ls -l | awk '{if ($6=="Apr" || $6=="Mai") print $9}' | xargs rm
次のコマンドを使用して簡単に認識できる日付に、ファイルとその最終変更時刻を表示することから始めることができますstat
。
$ stat -c '%n %z' foo bar
2012-02-25 23:39:31.000000000 +0000 foo
2012-02-25 23:43:35.000000000 +0000 bar
これを組み合わせるとgrep
、リストを希望の月にフィルタリングできます。
$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. '
これにより、2012年4月から5月の間に変更されたファイルが得られます。次に、以下を使用して削除するファイル名(4番目以降のフィールド)のみを抽出する必要がありますcut
。
$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. ' | cut -f 4- -d' '
出力に満足したら、そのように削除します(これはノーリターンのポイントなので、シートベルトを着用してください:):
$ !! | while read filename; do rm -f "$filename"; done
注:この!!
表記は最後のコマンドを繰り返すため、もう一度入力する必要はありません。この場合、最後に最後のカットを付けてstatコマンドを繰り返します。