在Unix中查找大小为的文件
我正在寻找一个Unix命令来打印文件的大小。我用过这个,但没用在Unix中查找大小为的文件,unix,find,size,command,Unix,Find,Size,Command,我正在寻找一个Unix命令来打印文件的大小。我用过这个,但没用 find . -size +10000k -print. 我想打印文件的大小以及文件名/目录 find . -size +10000k -exec ls -sd {} + 如果您的find版本不接受+符号(其行为类似于xargs的),那么您可以使用(GNUfind和xargs,因此find可能无论如何都支持+): 或者您可以将+替换为\(并且生活在相对低效的环境中),或者您可能生活在名称中的空格引起的问题中,并使用可移植的: f
find . -size +10000k -print.
我想打印文件的大小以及文件名/目录
find . -size +10000k -exec ls -sd {} +
如果您的find
版本不接受+
符号(其行为类似于xargs
的),那么您可以使用(GNUfind
和xargs
,因此find
可能无论如何都支持+
):
或者您可以将+
替换为\代码>(并且生活在相对低效的环境中),或者您可能生活在名称中的空格引起的问题中,并使用可移植的:
find . -size +10000k -print | xargs ls -sd
ls
命令上的-d
可确保如果找到目录(不太可能,但…),则将打印目录信息,而不是目录中的文件。而且,如果您正在查找超过1MB的文件(如现在删除的注释所示),则需要将+10000k
调整为1000k
,或者+1024k
,或者+2048
(对于512字节块,-size
的默认单位)。这将列出大小,然后是文件名。当然,您可以通过在find
命令中添加-type f
来避免使用-d
。假设您有GNU find:
find . -size +10000k -printf '%s %f\n'
如果希望大小字段的宽度保持不变,可以执行以下操作:
find . -size +10000k -printf '%10s %f\n'
请注意,-size+1000k
选择至少10240000字节的文件(k
是1024,而不是1000)。你在评论中说,你希望文件大于100万;如果是1024*1024字节,那么:
find . -size +1M ...
将实现这一技巧——除了它还将打印文件的大小和名称,这些文件的大小和名称正好是1024*1024字节。如果这很重要,您可以使用:
find . -size +1048575c ...
您需要确定所需的标准。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
谢谢我曾经找到过-size+300000k-print | xargs ls-sd 2>/dev/null该命令为我提供了find:unknown predicate'-print.
我假定
实际上不存在。精度很重要。堆栈溢出是解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另请注意,在+1048575
之后需要一个c
来获取字节(字符),而不是默认的512字节块。@JonathanLeffler:修复了,谢谢!有趣。这应该记录为POSIX标准的GNU扩展(我假设)。
./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116