web-dev-qa-db-ja.com

ファイル名dateを使用した特定の日付範囲内のLinuxtarファイル

次のように、名前がYYYYMMDDで始まるファイルがあります。

20160221_143223_Report.csv
20160222_121223_Report.csv
           ...
20160229_141223_Report.csv
20160301_171223_Report.csv

ファイル名に「Report」が含まれ、名前が1〜8日前の範囲に対応するファイルをtarしたい。例:今日は3月1日なので、2月22日から2月29日までファイルをtarします(今日は含まれません)。

files=($(ls |<HAS "Report" in filename> and  <WITHIN `date -d "8 days ago" '+%Y%m%d'> )) #output will be filenames that has the Word "Report" and  from 22th to 29th FEB
tar cvfz oldfile.tar.gz "${files[@]}"

私が一致させるべきパターンは何ですか?

1
hades

findを自分で実行したい場合は、おそらく最善の策です。

find . -name '*Report.csv' -mtime +8 | xargs  tar -czvf  oldfile.tar.gz

logrotateと呼ばれる古いファイルをクリアするためのかなり標準的なツールもあります。これは、フォルダー内のパターンに一致し、古いファイルの圧縮や履歴の削除など、さまざまな整理を行うことができます。

1
Paul