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

最後の(最新の)20を除くフォルダ内のすべてのファイルを削除しますか?

この質問にはすでに回答があります :最も古いファイルを削除する

(8つの回答)
5年前に閉鎖されました。

別のディレクトリからすべてのファイルを削除し、最新のファイルのみを20ファイル保持したい。
これはこれを行うための正しいコマンドですか?

ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f

承認された回答:

zshを使用 およびglob-qualifiers:

print -rl -- *(D.Om[1,-21])

最後の(最近変更された)20を除くすべての通常のファイルが一覧表示されます。
D 非表示のファイルを選択します、. 通常のファイルのみを選択します。Om mtimeによる逆ソートを意味します (最初に最も古い)および[1,-21] 最初から最後から21番目までを選択します。
結果に満足できる場合は、print -rlを置き換えます。 rmを使用 :

rm -- *(D.Om[1,-21])

膨大な数のファイルがある場合は、zargsを使用する必要があるかもしれません。 引数リストが長すぎるのを避けるため

autoload zargs
zargs ./*(D.Om[1,-21]) -- rm

Linux
  1. ディレクトリ内のすべてのファイルを削除する3つの方法(拡張子が付いた1つまたは少数のファイルを除く)

  2. Linuxで1つの特定のファイルを除いてフォルダ内のすべてのファイルを削除する方法

  3. 検索で特定のサブディレクトリを除くすべてのファイルを削除しますか?

  1. フォルダ内のすべてのファイルを印刷しますか?

  2. 最後のログファイル(アルファベット順)を除く古いログファイルを削除しますか?

  3. 最後を除くすべての改行をスペースに置き換えますか?

  1. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?

  2. 検索を使用して特定のディレクトリを検索し、1つのディレクトリを除くその中のすべてのファイルを削除しますか?

  3. Linux ですべてのスパース ファイルを見つける方法