find
を使用できます .要件と用途に応じて日付を計算します。
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -print
確認後、削除してください
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -delete
まず、作成されたファイルを検索します 作成時間は通常どこにも保存されていないか、取得するのが難しいため、特定の時間に作成するのは少し難しいです。あなたが持っているのは mtime
です 、または最終更新時刻、および ctime
これは「変更」時間であり、inode への変更で更新されます。私はあなたが修正時間を欲しがっていると仮定します。
find
以来、特定の日付に変更されたファイルを見つけることは、やや興味深いことが判明しました。 真夜中に作成されたファイルを正しく処理するのは少し難しいようです。
相対時間がわかっている場合 (つまり、昨日だった場合)、find -daystart -mtime 1
を使用できます。 、しかし、間違った真夜中に変更されたファイルが見つかりました Aug 8 00:00
.ただし、これはうまくいくようです:
find dir/ -daystart -mtime +0 \! -mtime +1 -ls
相対時間を計算したくない場合は、 find
-newerXY
あります :
find dir/ -newermt 'Aug 7 00:00' \! -newermt 'Aug 8 00:00' -ls
繰り返しますが、比較は「新しい」または「同じくらい古い」ではなく「新しい」ため、これは真夜中に正確に作成されたファイルを間違って取得します。システムのタイムスタンプが 1 秒未満の精度である場合、それを達成するのは難しいかもしれませんが、touch
によって作成されたファイルでテストすると発生します。 ...
毛むくじゃらの回避策は次のようになります:
find dir/ -newermt 'Aug 6 23:59:59.999999999' \! -newermt 'Aug 7 23:59:59.999999999' -ls
いずれにせよ、必要な -name "DBG_A_sql*"
を追加してください 正しい名前のファイルのみを取得します。 -ls
を置き換えることができます 最後に -delete
リストの代わりにファイルを削除します。 (-ls
、 -delete
と -newerXY
少なくとも GNU find と OS X の BSD find には存在します。)
もちろん、実際に日付のテキスト表現を解析することはできますが、ls
一部のジョーカーが印刷できない文字を含むファイルを作成した場合、正しく取得するのが難しくなります。確かに、サンプル ファイルにはそのようなものはありませんが、一般に、特に /tmp
では誰でも作成できます。 .
(ただし | xargs rm
では これらのファイルを見逃すだけです。また、ファイル名にスラッシュを含めることはできないため、誰もあなたの rm
を指すのは難しいでしょう。 別のディレクトリに移動します。)
ただ bash ループ
for file in /tmp/DBG_A_sql* ; do
[ "$(date -I -r "$file")" == "2016-08-07" ] && rm "$file"
done