所以我正在计划备份,子目录中有数千个文件,我知道最大的文件只是我不需要备份的数据集,而不是我创建的东西。
我发现这个有用的命令 here它列出了所有大于或小于给定尺寸的东西:
如果我这样做:
find . -type f -size +1000M
它只列出了 4 个文件,但对于 +100M,大约有 30 个文件。我可以仔细查看,看看是否有任何重要的东西需要保留并相应地调整阈值。
想要一个总大小,以便我知道它是否适合 25 或 100MB 的光盘..
所以我试着像这样将它传送到 du
但它似乎不起作用,即给我找到的 4 个文件的总数:
find . -type f -size +1000M | du
有谁知道如何做到这一点?
(是的,当然会将 + 更改为 - ,小于不大于之前查看数字,但在查看 30 个文件而不是数千个文件时更容易看出它是否正常工作)。
最佳答案
您可以使用 -printf
运行 find
,它有很多选项来控制它打印的内容(已记录 here )。所以你可以打印每个文件,然后是它使用了多少个 1 KB 的磁盘 block ,使用:
find . -type f -size +1000M -printf '%p %k\n'
完成后,用 awk
求和比用 du
求和更容易:
find . -type f -size +1000M -printf '%p %k\n' | awk 'BEGIN{total=0}{total += $2}END{print total}'
那是因为 du
只接受以 NUL
(ASCII 0) 结尾的输入列表。所以你必须这样做:
find . -type f -size +1000M -printf '%p\0' | du -k --files0-from=- --total
然后查看最后一行“总计”。但是以 NUL
结尾的文件名列表并不便于用户查看;没有用户名,文件名看起来是连在一起的。
关于linux - 所有文件的总大小小于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43636925/