有一个类似的输入:

folder1
folder2
folder3
...
foldern

我想一次遍历多行并处理每行,删除第一个/(并且更多,但现在就足够了)并回显。用单线程在bash中进行迭代有时可能很慢。替代方法是将输入文件拆分为N个片段,并以不同的输入和输出运行N次相同的脚本,最后可以合并结果。

我想知道xargs是否可行。

更新1:

输入:
/a/b/c
/d/f/e
/h/i/j

输出:
mkdir a/b/c
mkdir d/f/e
mkdir h/i/j

脚本:
for i in $(<test); do
  echo mkdir $(echo $i | sed 's/\///') ;
done

与xargs一起使用无法正常工作:
xargs -a test -I line --max-procs=2 echo mkdir $(echo $line | sed 's/\///')

显然,我需要一种在每行输入上执行sed的方法,但是使用$()无效。

最佳答案

您可能想要:

--max-procs=max-procs, -P max-procs
          Run up to max-procs processes at a time; the default is  1.   If
          max-procs  is 0, xargs will run as many processes as possible at
          a time.  Use the -n option with -P; otherwise chances  are  that
          only one exec will be done.

http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs

关于linux - 使用xargs处理文件并发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28976908/

10-16 11:06