我想递归地在每个目录中找到最大的文件

德里克

输出将包括目录名称,文件名和文件大小。运行命令的每个目录都有一个(最大文件)。

如果可能的话,该目录中文件的平均大小也是如此。

目的是使目录能够查找比目录中其他文件大得多的文件,以便可以替换它们

斯蒂芬·基特

合并findawk允许计算平均值:

find . -type f -printf '%s %h/%f\0'|awk 'BEGIN { RS="\0" } { SIZE=$1; for (i = 1; i <= NF - 1; i++) $i = $(i + 1); NF = NF - 1; DIR=$0; gsub("/[^/]+$", "", DIR); FILE=substr($0, length(DIR) + 2); SUMSIZES[DIR] += SIZE; NBFILES[DIR]++; if (SIZE > MAXSIZE[DIR] || !BIGGESTFILE[DIR]) { MAXSIZE[DIR] = SIZE; BIGGESTFILE[DIR] = FILE } }; END { for (DIR in SUMSIZES) { printf "%s: average %f, biggest file %s %d\n", DIR, SUMSIZES[DIR] / NBFILES[DIR], BIGGESTFILE[DIR], MAXSIZE[DIR] } }'

以更易读的方式进行布局,AWK脚本是

BEGIN { RS="\0" }

{
  SIZE=$1
  for (i = 1; i <= NF - 1; i++) $i = $(i + 1)
  NF = NF - 1
  DIR=$0
  gsub("/[^/]+$", "", DIR)
  FILE=substr($0, length(DIR) + 2)
  SUMSIZES[DIR] += SIZE
  NBFILES[DIR]++
  if (SIZE > MAXSIZE[DIR] || !BIGGESTFILE[DIR]) {
    MAXSIZE[DIR] = SIZE
    BIGGESTFILE[DIR] = FILE
  }
}

END {
  for (DIR in SUMSIZES) {
    printf "%s: average %f, biggest file %s %d\n", DIR, SUMSIZES[DIR] / NBFILES[DIR], BIGGESTFILE[DIR], MAXSIZE[DIR]
  }
}

这需要空分隔的输入记录(我从muru的答案中窃取了此记录);对于每个输入记录,

  • 存储尺寸(供以后使用),
  • 删除路径中第一个字符之前的所有内容(因此我们至少应正确处理带有空格的文件名),
  • 提取目录,
  • 提取文件名,
  • 将我们之前存储的大小添加到目录中的大小总和中,
  • 增加目录中文件的数量(以便我们可以计算平均值),
  • 如果大小大于目录存储的最大大小,或者如果我们尚未在目录中看到文件,则更新最大文件的信息。

完成所有操作后,脚本将循环遍历各个键,SUMSIZES并输出目录,平均大小,最大文件的名称和大小。

您可以将输出通过管道sort传递到按目录名称排序。如果您要另外以人性化的格式设置尺寸,则可以将printf更改

printf "%.2f %d %s: %s\n", SUMSIZES[DIR] / NBFILES[DIR], MAXSIZE[DIR], DIR, BIGGESTFILE[DIR]

然后将输出通过管道传递到numfmt --field=1,2 --to=iec您仍然可以按目录名称对结果进行排序,只需要从第三个字段开始排序即可sort -k3

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在硬盘中找到最大的目录?

来自分类Dev

如何在硬盘中找到最大的目录?

来自分类Dev

Mac:如何递归地在子目录中查找最大的文件(忽略所有目录)

来自分类Dev

在目录中找到最大的文件,并在变量中设置文件名

来自分类Dev

如何在每个子目录中找到丢失的文件?

来自分类Dev

在目录中找到我知道部分文件名和扩展名的文件

来自分类Dev

在目录中找到最新的构建文件

来自分类Dev

如何在目录中找到文件

来自分类Dev

Python IOError,无法在目录中找到文件

来自分类Dev

递归地在列表中找到完全平方和

来自分类Dev

从目录中递归最小地复制文件

来自分类Dev

C递归程序从数组中找到最大元素

来自分类Dev

对于制作的每个文件,我想创建一个包含多个文件夹的目录

来自分类Dev

递归地(许多子目录)找到pdf文件并合并为一个pdf文件(linux,bash)

来自分类Dev

将文件夹路径的所有目录递归地放入我的Poco

来自分类Dev

将文件夹路径的所有目录递归地放入我的Poco

来自分类Dev

bash脚本,该脚本在子目录中找到特定的文件夹并在所有目录中递归创建目录

来自分类Dev

Gnome Shell“文件和文件夹”镜头仅在我的主目录中找到文件和文件夹

来自分类Dev

在每个分区的列中找到最大值

来自分类Dev

推力CUDA在每个组(段)中找到最大值

来自分类Dev

我如何递归grep目录中每个文件的前50行?

来自分类Dev

我如何从脚本中找到桌面目录,即使该目录已从用户配置文件中移出?

来自分类Dev

Python,我想在一个文件夹中找到每个子文件夹的文件

来自分类Dev

如何创建Windows批处理文件,在每个目录中递归地合并所有* NAD.TXT?

来自分类Dev

在VBA中找到文件后如何停止递归搜索

来自分类Dev

在哪里可以在Ubuntu中找到我的Python目录

来自分类Dev

我会在 /var/lib/ 目录中找到什么?

来自分类Dev

在文件和目录列表中找到公用的父路径

来自分类Dev

Powershell在根目录中找到一个排除文件

Related 相关文章

  1. 1

    如何在硬盘中找到最大的目录?

  2. 2

    如何在硬盘中找到最大的目录?

  3. 3

    Mac:如何递归地在子目录中查找最大的文件(忽略所有目录)

  4. 4

    在目录中找到最大的文件,并在变量中设置文件名

  5. 5

    如何在每个子目录中找到丢失的文件?

  6. 6

    在目录中找到我知道部分文件名和扩展名的文件

  7. 7

    在目录中找到最新的构建文件

  8. 8

    如何在目录中找到文件

  9. 9

    Python IOError,无法在目录中找到文件

  10. 10

    递归地在列表中找到完全平方和

  11. 11

    从目录中递归最小地复制文件

  12. 12

    C递归程序从数组中找到最大元素

  13. 13

    对于制作的每个文件,我想创建一个包含多个文件夹的目录

  14. 14

    递归地(许多子目录)找到pdf文件并合并为一个pdf文件(linux,bash)

  15. 15

    将文件夹路径的所有目录递归地放入我的Poco

  16. 16

    将文件夹路径的所有目录递归地放入我的Poco

  17. 17

    bash脚本,该脚本在子目录中找到特定的文件夹并在所有目录中递归创建目录

  18. 18

    Gnome Shell“文件和文件夹”镜头仅在我的主目录中找到文件和文件夹

  19. 19

    在每个分区的列中找到最大值

  20. 20

    推力CUDA在每个组(段)中找到最大值

  21. 21

    我如何递归grep目录中每个文件的前50行?

  22. 22

    我如何从脚本中找到桌面目录,即使该目录已从用户配置文件中移出?

  23. 23

    Python,我想在一个文件夹中找到每个子文件夹的文件

  24. 24

    如何创建Windows批处理文件,在每个目录中递归地合并所有* NAD.TXT?

  25. 25

    在VBA中找到文件后如何停止递归搜索

  26. 26

    在哪里可以在Ubuntu中找到我的Python目录

  27. 27

    我会在 /var/lib/ 目录中找到什么?

  28. 28

    在文件和目录列表中找到公用的父路径

  29. 29

    Powershell在根目录中找到一个排除文件

热门标签

归档