- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【シェル】日付が最も古くサイズが小さいファイル削除)
【シェル】日付が最も古くサイズが小さいファイル削除
このQ&Aのポイント
- ディレクトリ内のファイルで、日付が最も古いかつサイズが小さいものを削除するシェルを作成しようと考えています。
- ls -lStrコマンドを使用して、ファイルを日付が古い順かつサイズが小さい順にソートします。
- lsコマンドで表示した2行目のファイル名を取得し、変数に格納してrmコマンドで削除する流れを考えています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「最も古い&(且つ)サイズが小さいもの」は、ちょっと意味が不明です。両方の条件が成り立つとはかぎりません。 「最古だけどファイルサイズが最小ではないもの」 「最古ではないけどファイルサイズは最小のもの」 の2つのファイルがある場合、どちらが削除対象ですか? 「最小ではなくても、とにかく最古」が対象なら、ls -tr 「最古ではなくても、とにかく最小」が対象なら、ls -Sr になるでしょう。 あと、lsのソート順オプションが決まったとして、その一覧の先頭に来ているファイルを削除する方法についてですが、 ls に-l オプションを付ける必要はないでしょう。 -lオプションなしならファイル名だけが表示されますから、それがそのまま削除対象として使えます。 あとは、head コマンドを使って ls -tr | head -1 で、lsの結果の先頭1行だけが表示されますから、 rm `ls -tr | head -1` とすれば、そのファイルだけが削除されます。 (これは、最古の1ファイルを削除する例になります)
お礼
最初の条件はディレクトリ内にある更新が古い日付順(同日同時刻ファイル複数) でソートし、さらに同日同時刻の古い複数ファイルの中でファイルサイズが小さいもの でソートというイメージでした。 1.最古の日付でソート 2.1.の中で更にサイズでソート のような感じです。 ちなみにlsの件はできました!ありがとうございました!