我正在寻找一个 Unix 命令来打印文件的大小。我用过这个,但没有用。
find . -size +10000k -print.
我想打印文件的大小以及文件名/目录。
find . -size +10000k -exec ls -sd {} +
如果您的版本find
不接受该+
表示法(其行为很像xargs
),那么您可以使用(GNUfind
和xargs
,因此find
可能+
无论如何都支持):
find . -size +10000k -print0 | xargs -0 ls -sd
或者您可能会替换为+
(\;
并忍受这种相对低效的情况),或者您可能会遇到由名称中的空格引起的问题并使用便携式:
find . -size +10000k -print | xargs ls -sd
-d
on命令确保如果ls
找到目录(不太可能,但是...),则将打印目录信息,而不是目录中的文件。而且,如果您要查找超过 1 MB 的文件(正如现在已删除的评论所建议的那样),您需要调整+10000k
to1000k
或可能+1024k
,或+2048
(对于 512 字节块,默认单位为-size
)。这将列出大小,然后是文件名。-d
当然,您可以通过添加-type f
到find
命令来避免需要。
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
假设你有 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 ...
你需要决定你想要什么标准。