n個のファイル以降、大量のファイルサイズを取得できませんでした。

n個のファイル以降、大量のファイルサイズを取得できませんでした。

私は多くのファイルのリストを処理する問題を処理する方法を見つけようとしています。

2000を超えるファイルのリストがあります。 lsまたはwcを使用してループに入れて各ファイルのファイルサイズを取得しようとすると、n個のファイルの後にls / wcが失敗します。 3~4個のファイルごとに2秒ずつ一時停止するとls/wcが動作するようです。

問題をさらに複雑にするために、rshを使用してリモートサーバーで実行してserver1とserver2のファイルサイズを比較することもできました。ただし、rshを使用しないとローカルで問題が発生しますが、失敗する前により多くのファイルのリストを見てください。

server="xy1"
for CompareList in `cat compare_jnj.txt`
do
     rsh $server wc -c /u2/web/$CompareList.java |awk '{print " ",$1," ",$2}'|tr -s " " >> output.out
     rsh $server wc -c /u2/web/$CompareList.class |awk '{print " ",$1," ",$2}'|tr -s " " >> output.out
done

私のファイルリストは、ファイル拡張子のないファイルの場所/名前の静的リストです。セキュリティ上の理由から、私が行った作業を大量に削除しましたが、以下は私が使用しているループ/コマンドを示しています。

結果セットにエクスポートするファイル名/サイズを取得するには、ls -lを使用して編集しました。

ベストアンサー1

あなたのスクリプトがファイル名のリストを取得するために出力を解析ls(または解析)するようです。wcこれをしないでください。とても悪い考えです。

パイプで区切られた単純なファイル名のリストとサイズ(バイト)を取得するには、次のものを使用できます。

stat -c '%n|%s' /path/to/directory/*

または、ディレクトリツリーを解析します。

find /path/to/directory -type f -exec stat -c '%n|%s' "{}" \;

おすすめ記事