我经常发现自己写简单的for循环来对许多文件执行操作,例如:
for i in `find . | grep ".xml$"`; do bzip2 $i; done
在我的4核机器上,只有一个核心在使用,这让我感到有点沮丧.. 有没有简单的方法可以为我的shell脚本添加并行性呢?
编辑:为了更好地解释问题,抱歉我一开始没有表述得更清楚!
我经常想要运行一些简单的脚本,比如绘制图形、压缩或解压缩,或者运行一些程序,处理中等大小的数据集(通常在100到10,000之间)。我用来解决此类问题的脚本看起来像上面那个示例,但可能具有不同的命令,甚至是一系列要执行的命令。例如,现在我正在运行:
for i in `find . | grep ".xml.bz2$"`; do find_graph -build_graph $i.graph $i; done
因此,我的问题与bzip无关!(虽然并行bzip看起来很酷,但我打算在未来使用它)。
find . -name \*.xml.bz2
而不是find . | grep ".xml.bz2$"
- 这正是 find 命令的用途!(另外,你的正则表达式会匹配文件名如 foozxmlzbz,但这是一个不同且不重要的问题)。 - Adam Rosenfield