これが bash ソリューションです。
f30days=$(date +%s --date="-30 days")
for file in 20*.txt; do
fdate=$(echo $file | tr _ -)
fsec=$(date +%s --date=${fdate/.txt/})
if [[ $fsec -lt $f30days ]]; then
echo "rm $file"
fi
done
「echo rm $file
」で終了しました " 実際にファイルを削除する代わりに、これにより前に結果がテストされます。
zsh
で :
zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)
echo -E
を削除します 幸せなとき。
GNU システム上で GNU シェル (bash
)、あなたは何かに近づくことができます:
start=$(date -d '30 days ago' +%Y_%m_%d.txt)
list=()
shopt -s nullglob
for file in 2*.txt; do
[[ $file > $start ]] && list+=("$file")
done
if (( ${#list[@]} > 0)); then
echo -E rm -i "${list[@]}"
fi