古いファイルの並べ替えと削除

古いファイルの並べ替えと削除

Linuxフォルダ内の日付と時刻に基づいて次のファイルを並べ替え、古いファイルを削除し、最新のファイルを保持する方法は?

実際の日付に関係なく、最新の日付を維持したいと思います。最新のファイルが1年を過ぎたファイルでも構いませんので、ただ保存したいと思います。

aa_zz_yuyubc_207_dc_ghgh.brr.01_30_2019 3_15_04 am.csv
aa_zz_chuucd.brr.04_30_2020 7_15_12 pm.csv
aa_zz_ddetr_354_m.brr.5_25_2021 03_28_00 am.csv
aa_zz_xyf.brr.6_05_2021 5_20_55 PM.csv

予想される結果:のみaa_zz_xyf.brr.6_05_2021 5_20_55 PM.csv

日付は<month>_<day>_<year> <hour>_<minute>_<second> am/pm12時間形式です。

ありがとう

ベストアンサー1

これにより、zsh次のことができます。

zmodload zsh/datetime
echo rm -f -- *.brr.*.csv(nOe['
    LC_ALL=C strftime -rs REPLY "%m_%d_%Y %I_%M_%S %p" ${${REPLY:r}##*.brr.}
  '][2,-1])

echoよろしければ削除してください(模擬実行のため))

zsh逆アライメントにはglob修飾子を使用しますOe首都 O)、nコードから返された値に基づいて数値的に(使用)。$REPLY[...]

このコードはstrftime -rstrftime実際には逆strptime)を使用して、ファイル名のタイムスタンプを秒単位のエポック時間に変換します。それから私たちがしなければならないのは、最後から2番目)だけを選択して渡し、[2,-1]最新rmのタイムスタンプを持つ項目だけを残すことです。

おすすめ記事