xargs中-L和-n有什么区别

问题描述 投票:0回答:2

每个 xargs --help:

-L, --max-lines=MAX-LINES 最多使用 MAX-LINES 个非空白输入 每个命令行的行数

-n, --max-args=MAX-ARGS 每个最多使用 MAX-ARGS 参数 命令行

这非常令人困惑。 -L 和 -n 有什么区别吗?

ls *.h | xargs -L 1 echo 
ls *.h | xargs -n 1 echo 
xargs
2个回答
17
投票

-n
在任何空格上分割,
-L
在换行符上分割。 例子:

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
$ echo {1..10} | xargs -n 1
1
2
3
4
5
6
7
8
9
10
$ echo {1..10} | xargs -L 1
1 2 3 4 5 6 7 8 9 10
$ seq 10
1
2
3
4
5
6
7
8
9
10
$ seq 10 | xargs -n 1
1
2
3
4
5
6
7
8
9
10
$ seq 10 | xargs -L 1
1
2
3
4
5
6
7
8
9
10

0
投票

MacOS 中的错误或此处缺少某些内容:

ls *.h | xargs -L 1  sh -c 'echo "$# $1 -- $@"'   
3 quick -- quick brown fox.h

我的期望与

相同
ls *.h | xargs -L 1                            
the quick brown fox.h

看起来,“sh -c '..'”吃掉了一个参数

有人知道为什么以及如何解决吗?

© www.soinside.com 2019 - 2024. All rights reserved.