多线程xargs与cat的输入

lel*_*uch 2 bash xargs

我的files.txt服务器上有一个文本文件,每行都是一个带有完整路径的文件,例如/home/lelouch/dir/randomfile.txt.

我想循环遍历files.txt,并将每个文件名传递给另一个脚本.

我已经让这个像这样工作:

cat /home/lelouch/dir/files.txt | xargs -0 -n 1 -P 30 /home/lelouch/bin/script.
Run Code Online (Sandbox Code Playgroud)

问题是,虽然我想一次处理30个文件,但它一次只发生1个文件.我尝试了其他一些方法,但我还没有像我想的那样工作.

有任何想法吗?

Ola*_*the 5

你说每一行都是一个文件路径,但你使用的-0选项是xargs,它将分隔符从换行符切换为空字符.从man页面:

输入项由空字符而不是空格终止,引号和反斜杠不是特殊的(每个字符都按字面意思)....

不要使用-0选项:

cat /home/lelouch/dir/files.txt | xargs -P 30 -n 1 /home/lelouch/bin/script
Run Code Online (Sandbox Code Playgroud)


Joh*_*nck 3

我想你想要GNU Parallel。

  • 猫 /home/lelouch/dir/files.txt | 并行 -P 30 /home/lelouch/bin/script (2认同)