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

我现在看到的是,虽然文件本身不大于 50GB,但根据 ps 输出,我确实看到脚本部分占用了 > 200 GB 的内存。

shell 是否将所有文件放在一起?执行此操作的更有效方法是什么?

答案1

200GB 的内存似乎相当过多,并且无法用上面显示的命令来解释。但是,通过避免命令替换,您可以使循环更加高效且不易出错:

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

相关内容