たとえば、日付が異なる多くのファイルを含むディレクトリがあり、日付がファイル名と共に配置されているとします。私のファイル名の1つがtr_2017-12-05.html
ファイルの日付が2017-12-05
今日の日付より30日前の場合は、2018-01-10
古いファイルを削除する必要があります。 Linuxスクリプトとは何ですか?
答え1
ファイル名に実際の作成日がある場合は、検索を使用して削除してください。
find /path/ -ctime +30 -exe rm -f {} \;
過去30日以内に作成されたファイルは削除されます。
答え2
これはあなたに役立ちます:
#!/bin/bash
directory=./
for file in $(find $directory -maxdepth 1); do
a='[^0-9]*([[:digit:]]{4}).([[:digit:]]{2}).([[:digit:]]{2})'
[[ $file =~ $a ]];
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}
# echo "Year=$year Month=$month Day=$day"
mydate=$year$month$day
if [[ $mydate ]]; then
[[ "$(date -d "$mydate" +'%s')" -gt "$(date -d "30 days ago" +'%s')" ]] &&
echo rm -i "$file"
fi
done
ファイルのリストが予想と一致したecho
場合rm
。