UNIXで5日以上古いファイルを削除する(タイムスタンプではなくファイル名の日付)

UNIXで5日以上古いファイルを削除する(タイムスタンプではなくファイル名の日付)

ディレクトリから5日以上経過したログファイルを削除したいと思います。ただし、削除はファイルのタイムスタンプに基づいてはいけません。ファイル名に基づいてください。たとえば、今日の日付は2012年7月5日で、ディレクトリには、などABC_20120430.logというABC_20120429.log名前の10個のファイルが含まれています。ファイル名から日付を抽出してこれらのファイルを削除できるようにしたいですABC_20120502.logABC_20120320.log

ベストアンサー1

私は@oHesslingだと思います。ほぼそこは:lsを解析しないでください、bashでより多くのことができます:

four_days=$(date -d "4 days ago" +%Y%m%d)
for f in ABC_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].log; do
  date=${f#ABC_}
  date=${date%.log}
  (( $date < $four_days )) && rm "$f"
done

おすすめ記事