Unix - 递归计数文件类型的数量

时间:2015-05-26 10:44:14

标签: linux unix count file-type

我是Stack Overflow的新手,我有点像Linux的新手。我一直在尝试使用以下命令过滤父目录中的特定文件及其子项:

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

我在寻找单个文件时发现了很多,但我需要每月执行此操作,并寻找更快的方法在一个命令中列出几种类型。我故意想要排除隐藏文件。

我试过这个但无济于事 - Count number of specific file type of a directory and its sub dir in mac

我已经在list, find, tree, echo等网络上看到了不同的方法,所以对此的任何帮助都会非常感激,如果有更好的方法来做到这一点,那么我现在正在做的那样&# 39;这不是问题,因为我愿意接受建议。我现在还不确定什么是给这只猫皮肤最好的方法!

非常感谢

3 个答案:

答案 0 :(得分:5)

您可以在find的帮助下执行此操作,因为您在初始帖子的链接中提到了这一点。 就像这样:

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

答案 1 :(得分:0)

您可以针对多种模式进行grep过滤。您应该在linux中了解联机帮助页,只需在终端中键入man grep,您就会看到该程序的功能和方式。

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

ls -R | grep -i '*.jpg\|*.png' | wc -l

-i将忽略名称的大小写,\|是一个或连接。

答案 2 :(得分:0)

感谢所有人的贡献,如果这证明对那里的人有用,我得到了一位开发人员朋友的帮助,他对我很友好,并且我发现这些对我来说最有效。案例如下:

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

这会跳过资源文件夹和隐藏文件,似乎会返回正确的结果。