有一个类似的输入:
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/