GNU/Linux >> Belajar Linux >  >> Linux

Menghapus file yang lebih lama dari 30 hari berdasarkan nama file sebagai tanggal

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

Linux
  1. Bagaimana cara Menghapus semua file yang lebih lama dari X jumlah Hari di Linux?

  2. Mengapa Find -mtime +1 Hanya Mengembalikan File Lebih Lama dari 2 Hari?

  3. Bagaimana cara mengatur cron untuk mengambil Cadangan Basis Data MySQL setiap hari dan menghapus file cadangan yang lebih lama yang lebih dari 10 hari?

  1. hitung total ruang disk yang digunakan oleh file yang lebih lama dari 180 hari menggunakan find

  2. Menyalin file berdasarkan tanggal modifikasi di Linux

  3. temukan dan hapus file atau folder yang lebih lama dari x hari

  1. Bagaimana Anda menghapus file yang lebih lama dari tanggal tertentu di Linux?

  2. Temukan semua file yang lebih lama dari satu menit

  3. Temukan direktori dengan semua file di dalamnya lebih tua dari X?