Ini adalah solusi 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
Saya mengakhirinya dengan "echo rm $file
" daripada benar-benar menghapus file Anda, ini akan menguji hasilnya sebelumnya.
Dengan zsh
:
zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)
Hapus echo -E
saat bahagia.
Pada sistem GNU dan dengan shell GNU (bash
), Anda dapat melakukan sesuatu yang mendekati dengan:
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
-
Bagaimana cara Menghapus semua file yang lebih lama dari X jumlah Hari di Linux?
-
Mengapa Find -mtime +1 Hanya Mengembalikan File Lebih Lama dari 2 Hari?
-
Bagaimana cara mengatur cron untuk mengambil Cadangan Basis Data MySQL setiap hari dan menghapus file cadangan yang lebih lama yang lebih dari 10 hari?