这个命令到底有什么作用?

这个命令到底有什么作用?

我有这个命令,但我不明白它的作用。

ls -Ra | grep -cve/ -e'^\.*$'

我怎样才能用“查找”命令做同样的事情。

答案1

将其分为两部分:

ls -Ra

递归列出所有 (-a) 文件 (-R)。 -a 表示以“.”开头的文件。通常不显示的字符将被包括在内。 -R 表示 ls 找到的任何子目录也将被列出,以及其中的所有子目录,依此类推。

grep -cve/ -e'^\.*$'

-c 表示返回已映射行的计数(在本例中为“ls”生成的文件),-v 表示反转要搜索的模式。有两种模式:“/”和“^.*$”。第一个模式匹配包含“/”字符的行,这将是列出子目录的行。第二个模式匹配名称为零个或多个“.”的文件。人物。

因为搜索是反向的,这意味着将输出与两个模式不匹配的行。并且,因为指定了 -c 选项,所以这只会打印数字不匹配的行。

您问“我如何使用‘查找’命令执行相同的操作?”

find 命令不会输出计数,因此您必须将其通过管道传输到“wc”,如下所示:

find . | wc -l

这将包括“.”。但是,因此您最终会得到比“ls | grep”版本多一个的答案。

在我机器上的目录中:

mmusante$ ls -Ra | grep -cve/ -e'^\.*$'
170594
mmusante$ find . | wc -l
  170595
mmusante$ 

相关内容