多数のファイル(1年の毎日のログなど)を含むディレクトリがあります。 22/11と言う前に作成されたすべてのファイルを削除したいと思います。どうすればそれを達成できますか? find
を使用してからexec -rm
を使用する必要がありますか?私はkshを使用しています。
find
の使用は、ファイルを削除するための好ましい方法です。詳細は http://mywiki.wooledge.org/UsingFind を参照してください。
これを行う1つの方法は、タイムスタンプを含むファイルを作成することです。例えば
touch -t 201311220000 /tmp/timestamp
次に、タイムスタンプに一致するファイルGNU find
(現在のディレクトリを想定)を削除します。例:
find . -type f ! -newer /tmp/timestamp -delete
または非GNU見つける
find . -type f ! -newer /tmp/timestamp -exec rm {} \;
GNUまたはいくつかのBSD find
s:
find . ! -newermt 2013-11-22 ! -type d -delete
ファイルの最終変更時刻をチェックすることに注意してください。一部のBSDでは、-newerBt
の代わりに-newermt
を使用して、代わりにファイルのiノードbirth時間を確認できます。
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;
例:
find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;
この場合、「ORA_XEO」で始まり15日を超えるすべてのファイルが削除されます。