我正在寻找一个Unix命令来打印文件大小。我用过这个但是没用。
find . -size +10000k -print.
我想打印文件的大小和文件名/目录。
答案 0 :(得分:57)
find . -size +10000k -exec ls -sd {} +
如果您的find
版本不接受+
符号(其行为与xargs
相似),那么您可以使用(GNU find
和{{ 1}},所以xargs
可能支持find
:
+
或者您可以将find . -size +10000k -print0 | xargs -0 ls -sd
替换为+
(并使用相对低效的效率),或者您可能会遇到由名称中的空格引起的问题并使用便携式设备:
\;
find . -size +10000k -print | xargs ls -sd
命令上的-d
确保如果找到目录(不太可能,但是......),则将打印目录信息,而不是目录中的文件。而且,如果您要查找的文件超过1 MB(建议现已删除的评论),则需要将ls
调整为+10000k
或1000k
或{{ 1}}(对于512字节块,+1024k
的默认单位)。这将列出大小,然后列出文件名。当然,您可以通过向+2048
命令添加-size
来避免-d
的需要。
答案 1 :(得分:9)
查找可用于以%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
答案 2 :(得分:5)
假设你有GNU find:
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 ...
您需要确定自己想要的标准。