ファイル名が作成日のファイルがある場合:
temp_30042019
temp_15042019
temp_10042021
temp_20022020
temp_21102022
temp_22102022
temp_01112022
ファイル名を今日の現在の日付と比較する方法
$ echo `date +"%d%m%Y"`
#output:
01112022
ファイル名の日付が30日より古い場合は削除されます。やっぱり手に入れて欲しい
temp_21102022
temp_22102022
temp_01112022
答え1
bash
スクリプトの使用:
#!/usr/bin/bash
older30days=$(date --date 'now - 30 days' '+%Y-%m-%d')
echo Checking files before $older30days
for file in ./temp_*; do
cdate="$(echo ${file#*_} | awk -v FS='' -v OFS='-' '{print $5$6$7$8,$3$4,$1$2}')"
if [[ $cdate < $older30days ]]; then
echo "Removing file: " $file
rm $file
fi
done
上記のコードを印刷する必要はありませんが、スクリプトでecho
実際に何が起こっているのかを理解するのに役立ちます。
これを使用して、echo ${file#*_} | awk -v FS='' -v OFS='-' '{print $5$6$7$8,$3$4,$1$2}
ファイル名の日付を有効な日付に解析してif
使用条件を比較できます。たとえば、次のようなファイル名を使用します。
temp_15042019
上記のコードを使用して、次のように解析します。
2019-04-15 #YYYY-MM-DD