我有这个命令,但我不明白它的作用。
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$