在Unix中查找大小的文件

时间:2012-04-09 20:55:09

标签: unix find size command

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

find . -size +10000k -print.

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

3 个答案:

答案 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调整为+10000k1000k或{{ 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 ...

您需要确定自己想要的标准。