GNU/Linux >> Linux の 問題 >  >> Linux

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

Kos が指摘したように、(作成日ごとに) 最も古いファイルを知ることはできない可能性があります。

変更時間が都合がよく、ファイル名に改行がない場合:

rm "$(ls -t | tail -1)"

作成された最も古いファイルではなく、変更された最も古いファイルを削除しても問題ないようです。

改行を含むファイル名で壊れないため、これが最も安全な方法であると考えています:

stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
  • stat --printf='%Y %n\0' * :現在の作業ディレクトリ内の各ファイルのファイル パスに続いて、最終変更時刻の NUL 区切りリストを出力します。
  • sort -z :行区切りとして NUL を使用してリストをソートします;
  • sed -zn '1s/[^ ]\{1,\} //p' :最初の NUL 終了行から、スペースの後にスペースが続く 1 つ以上の文字を含む文字列の最初の出現を削除し、それを出力します;
  • xargs -0 rm :NUL で終了する行を rm に渡します 引数として;
% touch file1
% touch file2
% stat -c '%Y %n' *            
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm 
% ls
file2

Linux
  1. Bashスクリプトをファイルに接続できますか?

  2. バッシュ‘?

  3. フォルダから最も古いファイルを削除するためのBashスクリプト?

  1. ファイル B に表示される行を別のファイル A から削除するには?

  2. Bash履歴ファイルから特定の行を削除します

  3. bash + bashスクリプトでファイルから変数と値を読み取る

  1. Bashスクリプトがエイリアスを認識しないのはなぜですか?

  2. Utf-8ファイルからBOMを削除する方法は?

  3. スクリプトから正しい終了コードを取得できませんか?