Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix中查找大小为的文件_Unix_Find_Size_Command - Fatal编程技术网

在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

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

find . -size +10000k -print.
我想打印文件的大小以及文件名/目录

find . -size +10000k -exec ls -sd {} +
如果您的
find
版本不接受
+
符号(其行为类似于
xargs
的),那么您可以使用(GNU
find
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