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?