lsのメモリ活用度** |

lsのメモリ活用度** |

私は次のことを行う単純なbashスクリプトを継承しました。変数を複数のディレクトリに設定します。

DIR="dir1 dir2 dir3 ... dirx"

次に、次の操作を行います。

for i in `echo $DIR`
do
   for j in `ls $i/*<regexp>*`
   do
      (<command to $j>)
   done
done

今私が見ているのは、ファイル自体が50 GBを超えていませんが、ps出力に基づいてスクリプト部分が200 GB以上のメモリを占有することを見ることができるということです。

シェルはすべてのファイルを1つにまとめますか?これを行うより効率的な方法は何ですか?

答え1

200GBのメモリはかなり過度に見え、上記のコマンドでは説明できません。しかし、命令の置換を避けることにより、ループをより効率的にし、エラーの発生の可能性を減らすことができる。

for i in $DIR
do
   for j in "$i"/*<pattern>*
   do
      (<command to $j>)
   done
done

関連情報