小于的所有文件的总大小

时间:2017-04-26 14:21:37

标签: linux bash

所以我计划备份,子目录中有成千上万的文件,我知道最大的文件只是我不需要备份的数据集,而不是我创建的东西。

我发现这个有用的命令here列出了大于或小于给定大小的所有内容:

如果我这样做:

find . -type f -size +1000M

它只列出了4个文件,但对于+ 100M,其中大约有30个。我可以查看并查看是否有重要的东西需要保留并相应地调整阈值。

想要一个总大小,所以我知道它是否都适合25或100MB的光盘..

所以我试着像这样将du传递给find . -type f -size +1000M | du ,但它似乎不起作用,即给我一个总数,说找到4个文件:

[{
    "userName": "Rodrigo",
    "date": "25 de abril de 2017",
    "score": 5
}]
[{
    "userName": "Jon",
    "date": "24 de abril de 2016",
    "score": 4
}]

有谁知道如何做到这一点?

(是的,当然会将+更改为a - ,比查看数字前更少,但是在查看30而不是数千个文件时更容易看出它是否正常工作。)

3 个答案:

答案 0 :(得分:1)

 du --total $(find . -type f -size +1000M)  

会帮助你。

答案 1 :(得分:1)

您可以使用find运行-printffind . -type f -size +1000M -printf '%p %k\n' 有很多选项可以控制打印的内容(记录为here)。因此,您可以打印每个文件,然后打印它使用的1千字节磁盘块:

awk

完成此操作后,使用du而不是find . -type f -size +1000M -printf '%p %k\n' | awk 'BEGIN{total=0}{total += $2}END{print total}' 对它们进行求和会更容易:

du

这是因为NUL只接受输入列表,如果它被find . -type f -size +1000M -printf '%p\0' | du -k --files0-from=- --total (ASCII 0)终止。所以你必须这样做:

NUL

然后看最后一个“总计”行。但MATCH (u:User), (b:Book) WHERE u.Name = 'Al' AND u.Surname = 'Pacino' AND (b.title = 'The Hours' OR b.title = 'War and Peace') CREATE (u)-[:LEND {date:['16 March 2017']}]->(b) - 终止的文件名列表对用户来说不方便;没有用户名,文件名看起来一起运行。

答案 2 :(得分:1)

为了找出,如果某些文件适合其他媒体,则必须考虑其他媒体的块大小。仅仅汇总每个文件的字节是不够的,因为每个文件都浪费了最后一个块中的磁盘空间。浪费的空间量取决于块大小。

我虚拟机上的主目录示例:

$ du -hs .
619M    .
$ du -bhs .
598M    .

文件大小为598M,但它们在磁盘上使用619M。浪费了大约20M。