在Unix中查找大小的文件

Kan*_* Lg 53 unix size command find

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

find . -size +10000k -print.
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 61

find . -size +10000k -exec ls -sd {} +
Run Code Online (Sandbox Code Playgroud)

如果你的版本find将不接受+符号(其作用相当喜欢xargs这样),那么你可以使用(GNU findxargs,因此find可能支持+反正):

find . -size +10000k -print0 | xargs -0 ls -sd
Run Code Online (Sandbox Code Playgroud)

或者你可能会替换+with \;(以及与此相关的低效率生活),或者你可能会遇到由名称中的空格引起的问题并使用便携式:

find . -size +10000k -print | xargs ls -sd
Run Code Online (Sandbox Code Playgroud)

-dls命令确保如果一个目录是迄今发现的(不太可能,但是...),然后将目录信息将目录中的印刷,而不是文件.并且,如果您正在查找超过1 MB的文件(建议删除现在的注释),则需要调整+10000kto 1000k或者+1024k,或者+2048(对于512字节块,默认单位-size).这将列出大小,然后列出文件名.您可避免需要-d通过添加-type ffind命令,当然.


Ada*_*dam 9

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

find . -size +10000k -printf "%h/%f,%s\n"
Run Code Online (Sandbox Code Playgroud)

产量

./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
Run Code Online (Sandbox Code Playgroud)


Kei*_*son 6

假设您有GNU查找:

find . -size +10000k -printf '%s %f\n'
Run Code Online (Sandbox Code Playgroud)

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

find . -size +10000k -printf '%10s %f\n'
Run Code Online (Sandbox Code Playgroud)

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

find . -size +1M ...
Run Code Online (Sandbox Code Playgroud)

将达到目的-除了还会打印恰好 1024 * 1024字节的文件的大小和名称。如果那很重要,您可以使用:

find . -size +1048575c ...
Run Code Online (Sandbox Code Playgroud)

您需要决定所需的条件。

  • 你需要在 `+1048575` 后面加上 `c` 来获取字节(字符)而不是默认的 512 字节块。 (2认同)