【问题标题】:How to count files in specific subdirectories of a parent directory?如何计算父目录的特定子目录中的文件?
【发布时间】:2021-10-30 10:12:23
【问题描述】:

我使用find . -type f | wc -l 命令来统计常规目录中的所有文件,但在更具体的情况下,如果目录包含许多文件,是否可以在命令中指定此项?例如,如果我只想计算 image 子目录中的所有文件。要知道我在mydirectory 中总共有多少张图片(全部为 .jpeg)。

此命令有效find /Users/mydirectory -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/jpeg") print $0 }',但只是显示它们。如何计算它们?

最后,find /Users/mydirectory -type f -exec file --no-pad --mime-type {} + | awk '$NF == "image/jpeg" {$NF=""; sub(": $", ""); print}' | wc -l 命令似乎可以解决问题。

mydirectory/
    folder1/
       image/
       label/
    folder2/
       image/
       label/
    ...

【问题讨论】:

    标签: linux command-line


    【解决方案1】:

    我的印象是你不知道find命令的maxdepth参数,它表示你的搜索命令的深度:使用find ... -maxdepth 1你说你只想在目录内搜索本身。我相信这会解决您的问题。

    简单示例:我创建了一个子目录“tralala”并添加了两个文件,一个包含一个文件的子目录,然后我启动了以下命令:

    find tralala -maxdepth 1 -type f | wc -l
    

    答案是2,这是正确的,从“待计算”的数量可以看出:

    Prompt$ find tralala -ls
    ... drwxrwxrwx   ... tralala/              => is a directory, don't count.
    ... drwxrwxrwx   ... tralala/dir           => is a directory, don't count.
    ... -rwxrwxrwx   ... tralala/dir/test.txt  => is inside subdirectory, don't count.
    ... -rwxrwxrwx   ... tralala/test.txt      => is file inside directory, to be counted.
    ... -rwxrwxrwx   ... tralala/test2.txt     => is file inside directory, to be counted.
    

    【讨论】:

    • maxdepth 的确切命令是什么?
    • 谢谢 Dominique,您有更好的命令吗?我的目录中有大约 10 万张图片,但显示结果需要很长时间。
    • 10 万张图片?那是巨大的!我只能想到一件事:find 指令在您的终端上显示这些文件中的每一个,每次都会刷新。虽然这不会消耗很多时间,但 100k 使它爆炸,所以我看到了一种可能性:将你的 find 命令的结果重定向到一个文件,比如find ... >result.txt,一旦完成,计算数量该文件wc -l result.txt 中的行数。如您所见,您需要两个单独的命令,也许将它们放入一个小的 shell 脚本中是个好主意。
    • 非常感谢您的建议,我终于用了一个小python脚本。
    • 不客气。如果我的回答对您有帮助,请点赞和/或接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2017-05-09
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多