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 find和xargs,因此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)
在-d对ls命令确保如果一个目录是迄今发现的(不太可能,但是...),然后将目录信息将目录中的印刷,而不是文件.并且,如果您正在查找超过1 MB的文件(建议删除现在的注释),则需要调整+10000kto 1000k或者+1024k,或者+2048(对于512字节块,默认单位-size).这将列出大小,然后列出文件名.您可避免需要-d通过添加-type f到find命令,当然.
可以使用查找以%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)
假设您有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)
您需要决定所需的条件。