gpt4 book ai didi

linux - 使用 grep 和 ls -a 命令

转载 作者:IT王子 更新时间:2023-10-29 00:10:38 26 4
gpt4 key购买 nike

使用 ls –agrep,您将如何列出/usr 中所有以字母 p 或字母 r 或 the字母 s 使用单个 grep 命令?

这样对吗?

ls –a | grep [prs] /usr

最佳答案

 ls -a /usr | grep '^[prs]'

将从 ls -a /usr 的输出中选择(这是 /usr 中的文件列表,由换行符分隔)以 p 中的任何一个开头的行, rs字符。

这可能是您的老师所期望的,但这是错误的或者至少是不可靠的。

文件名可以由多行组成,因为换行符与 Linux 或任何 unix 上的文件名中的任何字符一样有效。因此该命令不会返回名称以 p 开头的文件, qs , 但以 p 开头的文件名行, qs .通常,您无法对 ls 的输出进行后处理可靠。

-a就是包含隐藏文件,也就是名字以.开头的文件.因为您只想要以 p 开头的那些, qs ,那是多余的。

注意:

ls /usr | grep ^[pqs]

就更错了。第一^是 Bourne shell 等少数 shell 中的特殊字符,rc , eszsh -o extendedglob (虽然在 bash 或其他 POSIX shell 中可以)。

然后,在大多数 shell 中(fish 是一个明显的异常(exception)),[pqs]是通配运算符。这意味着 ^[qps]意味着由 shell 扩展为匹配该模式的文件列表(相对于当前目录)。

所以在像 bash 这样的 shell 中不对待^特别是,如果有一个名为 ^p 的文件在当前目录中,它将变为

ls /usr | grep ^p

如果没有匹配的文件,在csh , tcsh , zshbash -O failglob ,您将收到一条错误消息,并且该命令将被取消。在 zsh -o extendedglob其中 ^是通配运算符,^[pqs]表示除 p 以外的任何文件, qs .

关于linux - 使用 grep 和 ls -a 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514953/

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