同じプレフィックスがあるディレクトリ(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.zip
。filelist.txt
-@
zip
この程度のテストを行い、要件を満たしていることを確認したら、次のファイルを削除できますfilelist.txt
。
xargs rm < filelist.txt
これにより、次のものが残ります。
filelist.txt
最も古いファイルのリストbackup.zip
最も古いファイルの内容
これは500MBのファイルサイズ制限を解決しません。 1つの方法は、zipファイルを作成した後にサイズを確認し、大きすぎる場合はアーカイブに含まれるファイルの数を減らすことです。