フォルダから最も古いファイルを削除するBashスクリプト

フォルダから最も古いファイルを削除するBashスクリプト

フォルダ内の古いファイルを削除するbashスクリプトを作成したいと思います。スクリプトを実行するたびに、古いファイルが1つだけ削除されます。この問題を解決するのに役立ちますか?ありがとう

ベストアンサー1

Coaseが指摘したように、(作成日の点で)最も古いファイルを知ることは不可能かもしれません。

修正時間が適切で、ファイル名に新しい行がない場合:

rm -- "$(ls -rt | head -n 1)"

(ファイル名を制御できない場合ls出力を慎重に解析してください。)

隠しファイルも考慮するかどうかのオプションを追加します-Als

GNU coreutils 9.0以降、GNUにはNULで区切られたファイル名を一覧表示するオプションがlsあるため--zero、これらの最新バージョンとbashまたはzshをシェルとして使用すると、すべてのファイル名を使用できるバージョンは次のとおりです。

IFS= read -rd '' file < <(ls --zero -rt) &&
  rm -- "$file"

これらの最新バージョンには、--time=birth一部のシステムおよびファイルシステム(ほとんどの基本ファイルシステムにある最新のGNU / Linuxシステムを含む)で作成時間に基づいてソートする機能もあります。

おすすめ記事