Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Unix-递归计算文件类型数_Linux_Unix_Count_File Type - Fatal编程技术网

Linux Unix-递归计算文件类型数

Linux Unix-递归计算文件类型数,linux,unix,count,file-type,Linux,Unix,Count,File Type,我对堆栈溢出还是个新手,对Linux有点陌生。我一直在尝试使用以下命令作为示例筛选父目录及其子目录中的特定文件: ls-R | grep'*.jpg'| wc-l 在查找单个文件时,我发现这很好,但我需要每月执行一次,并寻找在一个命令中列出几种类型的更快方法。我有意排除隐藏的文件 我试过了,但没有用- 我在网上看到了不同的方法,如列表、查找、树、回音等。因此,如果有比我目前所做的更好的方法,我将不胜感激,因为我愿意接受建议。我只是不知道现在给这只猫剥皮的最好方法是什么 非常感谢您可以对多个图案

我对堆栈溢出还是个新手,对Linux有点陌生。我一直在尝试使用以下命令作为示例筛选父目录及其子目录中的特定文件:

ls-R | grep'*.jpg'| wc-l

在查找单个文件时,我发现这很好,但我需要每月执行一次,并寻找在一个命令中列出几种类型的更快方法。我有意排除隐藏的文件

我试过了,但没有用-

我在网上看到了不同的方法,如列表、查找、树、回音等。因此,如果有比我目前所做的更好的方法,我将不胜感激,因为我愿意接受建议。我只是不知道现在给这只猫剥皮的最好方法是什么


非常感谢

您可以对多个图案使用
grep
过滤器。您应该了解linux中的manpages,只需在终端中键入
mangrep
,您就可以了解该程序的功能和方式

对于您的问题,例如,您可以使用它来过滤png和jpeg文件(区分大小写,从而获得png和png文件):


-i
将忽略名称的大小写,
\\\124;
是一个or连接。

您可以在
查找
的帮助下完成此操作,正如您最初文章中的链接所述。
就像这样:

find . -name \*.jpg -or -name \*.png -not -path \*/\.\* | wc -l

感谢大家的贡献,如果这被证明对其他人有用,我已经从一位开发人员朋友那里得到了一些帮助,他很友好地为我研究了它,我发现在我的特定情况下最有效的方法如下:

find . -type f \( -iname "*.jpg" ! -iname ".*.png" ! -path "*/.HSResource/*" \) |wc -l

这将跳过资源文件夹和隐藏文件,并显示为返回正确的结果。

在我的原始命令上,-i标志运行良好,但运行ls-R | grep-i'.rtf\|.txt'| wc-l会返回0个结果。看起来or就是原因,我已经使用不同的文件类型进行了测试,我知道这些文件类型包含了结果。这很好,但它也包括了目录中的隐藏文件,这是我不想要的。如果您希望大小写文件扩展名匹配,您也可以使用
-iname
而不是
-name
忽略大小写。
find . -type f \( -iname "*.jpg" ! -iname ".*.png" ! -path "*/.HSResource/*" \) |wc -l