列出每个文件夹中文件名与模式匹配的文件数

康拉德

我想递归搜索目录树,并列出每个文件夹中具有与给定字符串相对应的名称的文件数。实际上,我想返回以下结果:

ls -l | wc -l

对于我通过确定的每个文件夹find

代码

下面的代码正确列出了每个文件夹中包含Magic Data字符串的文件数

find /path/to/cool/stuff                        \         
        -maxdepth 4                             \         
        -type d                                 \         
        -name '*Magic Data*'                    \         
        -print0 | xargs                         \         
                --verbose                       \         
                -0 -I {} ls -l {}               

我想扩展它,并将结果ls传送到wc -l

试图

find /path/to/cool/stuff                        \         
        -maxdepth 4                             \         
        -type d                                 \         
        -name '*Magic Data*'                    \         
        -print0 | xargs                         \         
                --verbose                       \         
                -0 -I {} ls -l {}  | wc -l            

这将失败并打印:

ls -l /path/to/cool/stuff/some/folders/Magic Data
ls -l /path/to/cool/stuff/some/folders2/Magic Data

所需的输出

/path/to/cool/stuff/some/folders/Magic Data  29
/path/to/cool/stuff/some/folders2/Magic Data 30

所需的输出将包含:

  • 搜索文件夹的完整路径
  • 的输出wc -l,在这种情况下,这反映了未隐藏文件的数量
库萨兰达

解决此问题的方法主要有两种:

  1. 修改find命令,使其仅输入您感兴趣的目录,然后x为其中的每个找到的文件打印一个字符(例如)。然后计算用产生的那个字符的数量wc -l输出字符比路径名更安全,因为Unix中的路径名可能包含换行符。这个解决方案有点棘手,因为它涉及-prune到忽略我们不感兴趣的目录,或者使用! -path

  2. 就像到目前为止一样,找到目录,然后使用内联脚本对其中的文件进行计数。这比较简单,下面是我要显示的内容。

find /path/to/cool/stuff -maxdepth 4 -type d -name "*Magic Data*' \
    -exec bash -O dotglob -c '
        dir=$1
        set -- "$dir"/*
        printf "%s %d\n" "$dir" "$#"' bash {} ';'

在这里,我们像您一样找到目录,然后针对每个目录运行以下简短bash脚本:

dir=$1
set -- "$dir"/*
printf "%s %d\n" "$dir" "$#"

这将从命令行获取目录的路径名(由给定find),并扩展其中的*glob模式。通过dotglob在脚本的命令行上设置shell选项,可以确保我们也计算隐藏文件和目录(删除-O dotglob时不计算隐藏名称)。

我们将所有名称扩展为的参数set,这会将位置参数设置为扩展的条目。位置参数的数量可以作为$#,因此也是该特定目录中文件的数量。

有关的:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

批处理逐行列出txt文件中文件夹中的文件名

来自分类Dev

在文件名(模式)之后列出文件夹中的文件 - Linux

来自分类Dev

如何从本地文件夹插入图像,其中文件名与 CollectionViewSource 中的项目匹配

来自分类Dev

在文件夹中文件名的开头添加序号

来自分类Dev

如何根据提供的模式列出文件夹中的文件名?

来自分类Dev

如何列出文件夹中的文件名

来自分类Dev

重命名文件夹以匹配内部文件名

来自分类Dev

列出文件夹中的所有文件,并在每个文件名之间添加句子

来自分类Dev

计算MySQL中文件夹中的文件数

来自分类Dev

递归列出具有文件名,文件夹名和权限的文件

来自分类Dev

批处理文件:列出文件名和文件夹名

来自分类Dev

列出 Arcpy 中文件夹内的文件?

来自分类Dev

过滤文件夹C语言中文件名的扫描目录

来自分类Dev

替换文件夹中文件名上的文本

来自分类Dev

代码,用于返回文件夹中文件名的列表,并使用VBscript在每个文件的第一行返回第35至40位的文本

来自分类Dev

查找并列出文件名扩展名以包括子文件夹

来自分类Dev

rsync与文件夹和文件名模式匹配以复制文件

来自分类Dev

查找每个文件夹中的文件数

来自分类Dev

每个文件夹的最大文件数

来自分类Dev

如何获取每个文件夹的文件数

来自分类Dev

bat文件更改文件夹中文件的日期时间,今天的日期时间从文本列表中读取文件名

来自分类Dev

如何将文件批量移动到与每个文件名对应的文件夹中?

来自分类Dev

为每个文件名创建文件夹并移动文件

来自分类Dev

检查文件夹中的任何文件是否包含模式,然后返回文件名

来自分类Dev

将csv文件中的名称与文件夹中的文件名匹配

来自分类Dev

根据文件名与文件夹Python匹配对文件进行排序

来自分类Dev

批量移动匹配文件名的文件到 C# 中的文件夹或使用脚本

来自分类Dev

如何使用angular js列出文件夹中的所有文件名

来自分类Dev

列出文件夹中相似文件名的数量

Related 相关文章

  1. 1

    批处理逐行列出txt文件中文件夹中的文件名

  2. 2

    在文件名(模式)之后列出文件夹中的文件 - Linux

  3. 3

    如何从本地文件夹插入图像,其中文件名与 CollectionViewSource 中的项目匹配

  4. 4

    在文件夹中文件名的开头添加序号

  5. 5

    如何根据提供的模式列出文件夹中的文件名?

  6. 6

    如何列出文件夹中的文件名

  7. 7

    重命名文件夹以匹配内部文件名

  8. 8

    列出文件夹中的所有文件,并在每个文件名之间添加句子

  9. 9

    计算MySQL中文件夹中的文件数

  10. 10

    递归列出具有文件名,文件夹名和权限的文件

  11. 11

    批处理文件:列出文件名和文件夹名

  12. 12

    列出 Arcpy 中文件夹内的文件?

  13. 13

    过滤文件夹C语言中文件名的扫描目录

  14. 14

    替换文件夹中文件名上的文本

  15. 15

    代码,用于返回文件夹中文件名的列表,并使用VBscript在每个文件的第一行返回第35至40位的文本

  16. 16

    查找并列出文件名扩展名以包括子文件夹

  17. 17

    rsync与文件夹和文件名模式匹配以复制文件

  18. 18

    查找每个文件夹中的文件数

  19. 19

    每个文件夹的最大文件数

  20. 20

    如何获取每个文件夹的文件数

  21. 21

    bat文件更改文件夹中文件的日期时间,今天的日期时间从文本列表中读取文件名

  22. 22

    如何将文件批量移动到与每个文件名对应的文件夹中?

  23. 23

    为每个文件名创建文件夹并移动文件

  24. 24

    检查文件夹中的任何文件是否包含模式,然后返回文件名

  25. 25

    将csv文件中的名称与文件夹中的文件名匹配

  26. 26

    根据文件名与文件夹Python匹配对文件进行排序

  27. 27

    批量移动匹配文件名的文件到 C# 中的文件夹或使用脚本

  28. 28

    如何使用angular js列出文件夹中的所有文件名

  29. 29

    列出文件夹中相似文件名的数量

热门标签

归档