1

ファイルを含むディレクトリがあります。アーカイブは非常に大きく、150 万の pdf ファイルが含まれています。
ディレクトリーは OS V7R1 を搭載した IBM i サーバーに保管されており、マシンは新しく、非常に高速です。
ファイルの名前は次のようになります。

invoice_[custno]_[year']_[invoice_number].pdf  
invoice_081500_2013_7534435564.pdf    

いいえ、シェルを使用して find コマンドでファイルを検索しようとしています。

find  . -name 'invoice_2013_*.pdf'  -type f | ls -l > log.dat

コマンドに時間がかかったため、操作を中止しましたが、結果はありませんでした。

小さいディレクトリで試してみると、すべて正常に動作します。

後で、毎日実行され、過去 24 時間に作成されたファイルを見つけるジョブが必要ですが、実行速度が遅すぎて忘れてしまいます。

4

4 に答える 4

7

lsからファイル名を読み取らないため、その呼び出しは機能しませんstdin

考えられる解決策は次のとおりです。

findユーティリティの組み込みリスト オプションを使用します。

find . -name 'invoice_2013_*.pdf' -type f -ls > log.dat

 

findユーティリティの-execオプションを使用して、ls -l一致するファイルごとに実行します。

find . -name 'invoice_2013_*.pdf' -type f -exec ls {} \; > log.dat

 

xargsファイル名をユーティリティにパイプし、ファイルls -l名をパラメータとして実行させます。

find . -name 'invoice_2013_*.pdf' -type f | xargs ls -l > log.dat

1 つのディレクトリ内の 150 万個のファイルのパターン検索は、どのファイル システムでも非効率的です。

于 2014-01-10T09:02:33.130 に答える
1

ディレクトリ内の新しいエントリのリストのみを表示するには、ディレクトリのジャーナリングを検討してください。INHERIT(*NO)ディレクトリ内のすべてのファイルもジャーナリングしないように指定します。次に、 DSPJRNを使用して最近のジャーナル エントリを抽出するだけで、追加されたオブジェクトを見つけることができます。

于 2014-01-14T03:13:58.227 に答える