bash shell脚本:如何将参数列表分组为N个项目?

Ste*_* Lu 2 bash shell

这里的用例是我想*在一个循环中一次采用一组文件,例如和它们一起构建arglists N.例如,

$ ls 
a.jpg
b.jpg
v.jpg
z.jpg
123.jpg
1234.jpg
Run Code Online (Sandbox Code Playgroud)

N这里是二,我想运行例如command a.jpg b.jpg,command v.jpg, z.jpg等等.

我该怎么做?

for file in *; do
    command [???]
done
Run Code Online (Sandbox Code Playgroud)

它不必使用for循环.希望有一个我不知道的UNIX实用程序,它可以重新安排arg列表.也许我得做一些花哨trIFS.

如果我的文件以数字命名,或者我只是想使用数字而不是在glob-expanded文件上操作(这个例子有N= 3),我就可以这样做:

for number in {0..10..3}; do
    echo $number $((number + 1)) $((number + 2))
done
Run Code Online (Sandbox Code Playgroud)

这会产生......

0 1 2
3 4 5
6 7 8
9 10 11
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 5

请参阅xargs及其-n选项.

ls | xargs -n3 command
Run Code Online (Sandbox Code Playgroud)

如果您的文件名包含空格,则可能需要-0选项和findwith -print0以列出文件.