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