gpt4 book ai didi

linux - grep 和 ls : 'l' flag not supported for ls when used with xargs?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:15 24 4
gpt4 key购买 nike

当 -l 标志与 xargs 和 grep 结合传递时,为什么 ls 不起作用?

$ ls -rt | xargs grep xyz

有效,但是:

$ ls -lrt | xargs grep xyz
grep: invalid option -- '-'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

最佳答案

因为 ls -l 的输出与此类似:

-rw-r--r-- 1 root  root  1491872 2012-11-22 03:07 Xvfb_screen0

将其通过管道传递给 xargs (ls -l | xargs grep xyz) 使您的 grep 命令成为

grep xyz -rw-r--r-- 1 root  root  1491872 2012-11-22 03:07 Xvfb_screen0

而且它没有任何意义。

编辑

在这里回答@vladr 评论,因为它的格式比评论框更好。 xargs 输入中的每个空格分隔文本都作为新参数传递给执行的命令,如您所见:

$ ls -l 
total 4
-rwxrwxr-x 1 carlos carlos 18 2012-11-22 15:17 foo

$ cat foo
#!/bin/sh
echo $#

$ ls -l | xargs ./foo
10

可以通过将 xargs 中的分隔符设置为 \n 来实现您所说的行为:

$ ls -l | xargs -d '\n' ./foo
2

关于linux - grep 和 ls : 'l' flag not supported for ls when used with xargs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com