如何加速sed命令

时间:2014-07-25 21:25:23

标签: macos unix sed

我使用以下sed命令编辑了近6000个文件。它需要更长的时间。

是否有人知道如何更快地制作以下命令。

find ./ -type f -exec sed -i -e 's/old word/new word/g' {} \;

2 个答案:

答案 0 :(得分:4)

类似于@ JonathanLeffler为多个文件运行一次sed调用的策略,但你也可以使用xargs并行运行多个线程,利用多个处理器。

find ./ -type f -print0 | xargs -0 -n 100 -P 8 sed -i .bak -e 's/old word/new word/g'

答案 1 :(得分:3)

实际上只有一种方法可以加快速度,即通过将sed替换为\;来减少+。这使find组文件名达到了方便的限制,大致类似于xargs,但没有必须依赖GNU -print0-0选项的麻烦分别为findxargs - 虽然它们也可在Mac OS X上提供的BSD findxargs中使用。它也是POSIX标准符号。

请注意,您使用后缀-e备份受影响的文件,因为sed的Mac版本坚持-i选项的参数,-e恰好在那里使用,脚本不必以-e作为前缀。

因此,此命令应该更快地运行:

find ./ -type f -exec sed -i .bak -e 's/old word/new word/g' {} +

争议的速度有多快。