私は多くの(100,000+)のサブディレクトリを含むディレクトリでいくつかのタスクを実行するためのbashスクリプトを書いています。以下のようにforループに渡すことができるパラメータの数に事前定義された制限はありますか?
for dir in $(find . -type d)
do
# My code
done
findコマンドがあまりにも多くのディレクトリを返すと、スクリプトが失敗するのではないかと心配されます。
ベストアンサー1
find出力を解析するのではなく、シェルワイルドカードのみを使用してください。これはより安全で、シェルに組み込まれています。シェル組み込み(for
外部プロセスなど)は呼び出しを行わないため、外部プロセスと同じパラメータリスト長制限は適用されませんexec*
。
for dir in ./*/; do
# ...
done