在Unix中查找大小的文件

我正在寻找一个Unix命令来打印它的大小的文件。 我用这个,但它没有工作。

find . -size +10000k -print. 

我想要打印文件的大小以及文件名/目录。

 find . -size +10000k -exec ls -sd {} + 

如果你的版本的find不接受+符号(这跟xargs ),那么你可以使用(GNU findxargs ,所以find可能的支持+无论如何):

 find . -size +10000k -print0 | xargs -0 ls -sd 

或者你可以用\;replace+ \; (而且生活在这种相对低效率的情况下),否则你可能会遇到名字空间引起的问题,并使用便携式:

 find . -size +10000k -print | xargs ls -sd 

ls命令中的-d确保了如果find一个目录(不太可能,但是…),那么将打印目录信息,而不是目录中的文件。 而且,如果您正在查找超过1 MB的文件(如现在删除的注释build议),则需要将+10000k调整为1000k1000k+1024k (对于512字节块,默认单位为大小)。 这将列出大小,然后列出文件名称。 当然,您可以通过将-type f添加到find命令来避免使用-d

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' 

如果你需要一个固定宽度的尺寸字段,你可以做一些事情:

 find . -size +10000k -printf '%10s %f\n' 

请注意, -size +1000kselect至less10,240,000字节的文件( k是1024,而不是1000)。 你在评论中说你想要大于1M的文件; 如果这是1024 * 1024字节,那么这个:

 find . -size +1M ... 

将做的伎俩 – 除了它还将打印文件的大小和名称正好是 1024 * 1024字节。 如果有问题,你可以使用:

 find . -size +1048575c ... 

你需要决定你想要什么标准。