何千ものファイルの中で最も古い 100 個のファイルを選択し、後で検索できるようにそのファイルのリストを作成しながら圧縮します。

何千ものファイルの中で最も古い 100 個のファイルを選択し、後で検索できるようにそのファイルのリストを作成しながら圧縮します。

同じプレフィックスがあるディレクトリ(cdr12345.csz、cdr32342.csv、cdr 98876.csvなど)から最も古い100個のファイルをインポートし、ファイルに保存されている100個のファイルの名前を一覧表示する方法があるかどうかを知りたいです。 .txtを後で読み取り、100個のファイルを圧縮できます。一度に100個しかできませんが、どのようにして最速の100個を最初に取得できますか? zipファイルのサイズは500mgb未満でなければなりません。

ベストアンサー1

最も古い100ファイルを識別するという点で、次のことができます。

ls -1tr /path/to/directory/cdr* | head -n100 > filelist.txt

1行に1つのファイルをリストし-1(ここでは必ずしも必要ではありません)、変更-t時間に基づいて最新の項目からソートし、-rソート順を逆にします(つまり、最新の項目を最後にリストします)。出力パイプには、head -n100最初の100行(つまり、最も古い100ファイル)が一覧表示されます。その後、出力をfilelist.txt最も古い100個のファイル名を含むファイルにリダイレクトしました。

その後、次を使用してこれらのファイルを圧縮できます。

zip backup -@ < filelist.txt

このオプションは標準入力からファイル名を読み取るように指示し、リダイレクトはファイルのリストを提供しますbackup.zipfilelist.txt-@zip

この程度のテストを行い、要件を満たしていることを確認したら、次のファイルを削除できますfilelist.txt

xargs rm < filelist.txt

これにより、次のものが残ります。

  1. filelist.txt最も古いファイルのリスト
  2. backup.zip最も古いファイルの内容

これは500MBのファイルサイズ制限を解決しません。 1つの方法は、zipファイルを作成した後にサイズを確認し、大きすぎる場合はアーカイブに含まれるファイルの数を減らすことです。

おすすめ記事