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