Unixで実装する必要があるシナリオがあります。ディレクトリ内のXMLバックアップファイルであるファイルの末尾に追加された日付に基づいてファイルを削除したいと思います。ファイルは次の基準に従って削除する必要があります。ファイルセットに最新の3つの日付ファイル(ファイルに日付が追加されたもの)のみを残し、残りを削除します。
カタログファイル:-
セット1:
Wf_ABC_201801011224.xml
wf_ABC_201801011220.xml
Wf_ABC_201801011241.xml
wf_ABC_201801011230.xml
Wf_ABC_201801011244.xml
wf_ABC_201801011260.xml
セット2:
Wf_DCB_201501021224.xml
wf_DCB_201601031220.xml
Wf_DCB_201601041241.xml
wf_DCB_201401051230.xml
Wf_DCB_201701061244.xml
wf_DCB_201801061260.xml
グループ3:
Wf_XYZ_201501011224.xml
wf_XYZ_201601011220.xml
Wf_XYZ_201701011241.xml
wf_XYZ_201801011230.xml
Wf_XYZ_201801021244.xml
wf_XYZ_201801031260.xml
Wf_XYZ_201501041224.xml
wf_XYZ_201601051220.xml
Wf_XYZ_201601061241.xml
wf_XYZ_201401071230.xml
Wf_XYZ_201701081244.xml
wf_XYZ_201801091260.xml
ベストアンサー1
この試み、
D1=`date -d "1 day ago" +"%Y%m%d"` && D2=`date -d "2 day ago" +"%Y%m%d"` && D=`date +"%Y%m%d"` && find . -type f -name "wf_*_*.xml" -not -name "wf_*_$D*.xml" -not -name "wf_*_$D1*.xml" -not -name "wf_*_$D2*.xml" -exec rm {} +
- 過去3つの日付をD1、D2、Dに保存します。
- パターン付きファイルを探す
wf_*_*.xml
- その後、過去3つの日付のパターンを無視
wf_*_$D*.xml
してwf_*_$D1*.xml
wf_*_$D2*.xml
- その後、ファイルを削除します。