57

我正在寻找一个 Unix 命令来打印文件的大小。我用过这个,但没有用。

find . -size +10000k -print.

我想打印文件的大小以及文件名/目录。

4

3 回答 3

69
find . -size +10000k -exec ls -sd {} +

如果您的版本find不接受该+表示法(其行为很像xargs),那么您可以使用(GNUfindxargs,因此find可能+无论如何都支持):

find . -size +10000k -print0 | xargs -0 ls -sd

或者您可能会替换为+\;并忍受这种相对低效的情况),或者您可能会遇到由名称中的空格引起的问题并使用便携式:

find . -size +10000k -print | xargs ls -sd

-don命令确保如果ls找到目录(不太可能,但是...),则将打印目录信息,而不是目录中的文件。而且,如果您要查找超过 1 MB 的文件(正如现在已删除的评论所建议的那样),您需要调整+10000kto1000k或可能+1024k,或+2048(对于 512 字节块,默认单位为-size)。这将列出大小,然后是文件名。-d当然,您可以通过添加-type ffind命令来避免需要。

于 2012-04-09T21:00:46.480 回答
9

Find 可用于以 %s 作为 printf 打印出文件大小(以字节为单位)。%h/%f 分别打印目录前缀和文件名。\n 强制换行。

例子

find . -size +10000k -printf "%h/%f,%s\n"

输出

./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
于 2012-04-09T21:10:41.320 回答
7

假设你有 GNU 发现:

find . -size +10000k -printf '%s %f\n'

如果您想要 size 字段的恒定宽度,您可以执行以下操作:

find . -size +10000k -printf '%10s %f\n'

请注意,-size +1000k选择至少 10,240,000 字节的文件(k是 1024,而不是 1000)。你在评论中说你想要大于 1M 的文件;如果那是 1024*1024 字节,那么:

find . -size +1M ...

可以解决问题——除了它还会打印恰好为1024*1024 字节的文件的大小和名称。如果这很重要,您可以使用:

find . -size +1048575c ...

你需要决定你想要什么标准。

于 2012-04-09T21:07:14.337 回答