Unix-递归计算文件类型数

Pam*_*mpa 3 unix linux file-type count

我是Stack Overflow的新手,还是Linux的新手。我一直在尝试使用以下命令作为示例来过滤父目录及其子目录中的特定文件:

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

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

我已经尝试过此方法,但无济于事— 在Mac中计算目录的特定文件类型及其子目录的数量

我在网络上看到了与其他方法不同的方法,list, find, tree, echo因此,对此的任何帮助将不胜感激,并且如果有比当前正在执行的方法更好的方法,那么这就不成问题了,因为我愿意接受建议。我只是不确定目前给这只猫剥皮的最佳方法是什么!

非常感谢你

Die*_*ist 6

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

find . -name \*.jpg -or -name \*.png -not -path \*/\.\* | wc -l
Run Code Online (Sandbox Code Playgroud)

  • 如果您想同时使用大小写扩展名,也可以使用-iname而不是-name来忽略大小写。 (3认同)

Ste*_*man 5

如果您到这里寻找更多摘要,可以使用以下方法递归计算文件夹中的所有文件扩展名:

find . -type f -name '*.*' -not -name '.*' | sed -Ee 's,.*/.+\.([^/]+)$,\1,' | sort | uniq -ci | sort -n
Run Code Online (Sandbox Code Playgroud)

这给出了如下总结:

    422 mov
   1043 mp4
   3266 png
   6738 CR3
   9417 RAF
  29679 cr2
  60949 jpg
Run Code Online (Sandbox Code Playgroud)


Nid*_*ger 0

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

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

ls -R | grep -i '*.jpg\|*.png' | wc -l
Run Code Online (Sandbox Code Playgroud)

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