フォルダ内の古いファイルを削除するbashスクリプトを作成したいと思います。スクリプトを実行するたびに、古いファイルが1つだけ削除されます。この問題を解決するのに役立ちますか?ありがとう
ベストアンサー1
Coaseが指摘したように、(作成日の点で)最も古いファイルを知ることは不可能かもしれません。
修正時間が適切で、ファイル名に新しい行がない場合:
rm -- "$(ls -rt | head -n 1)"
(ファイル名を制御できない場合ls出力を慎重に解析してください。)
隠しファイルも考慮するかどうかのオプションを追加します-A
。ls
GNU coreutils 9.0以降、GNUにはNULで区切られたファイル名を一覧表示するオプションがls
あるため--zero
、これらの最新バージョンとbashまたはzshをシェルとして使用すると、すべてのファイル名を使用できるバージョンは次のとおりです。
IFS= read -rd '' file < <(ls --zero -rt) &&
rm -- "$file"
これらの最新バージョンには、--time=birth
一部のシステムおよびファイルシステム(ほとんどの基本ファイルシステムにある最新のGNU / Linuxシステムを含む)で作成時間に基づいてソートする機能もあります。