質問: **やりたいこと** ・指定ディレクトリ内に入っているファイルの中から、実行日(もしくは指定した日付)から5日前以上のファイルを、ファイル名から判断して削除したい ・最終的にcronから呼び出したいので、shファイルとして作成したい --- **環境** ・CentOS --- **指定ディレクトリ内のファイル名** ・ファイル名の一部として日付を入れています ・日付部分以外は固定です > > test_data_20170106.hoge.gz > > > test_data_20170107.hoge.gz > > > test_data_20170111.hoge.gz > > >
回答: ``` cd 目的dir DELDAY=`date --date '5 days ago' '+%Y%m%d'` for LINE in `find -iname "test_data_*.hoge.gz"` do FILEDATE=`echo "$LINE" | sed -e 's/[^0-9]//g'` if [ $DELDAY -gt $FILEDATE ] ; then echo "delete $LINE" rm -f $LINE fi done ``` findを使ったパターンになります。 一応余計なファイルが入ってても誤削除はしないようにはなってます。