您可以使用HDFS的fsck命令来获得文件大小。
对于例如,当我执行fsck的HDFS的/ tmp/-files,然后我得到以下输出:
/tmp <dir>
/tmp/100GB <dir>
/tmp/100GB/Try <dir>
/tmp/100GB/Try/1.txt 5 bytes, 1 block(s): OK
/tmp/100GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/100GB/part-m-00000 107374182400 bytes, 800 block(s): OK
/tmp/100GB/part-m-00001._COPYING_ 44163923968 bytes, 330 block(s):
/tmp/10GB <dir>
/tmp/10GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/10GB/part-m-00000 10737418300 bytes, 81 block(s): OK
/tmp/1GB <dir>
/tmp/1GB/_SUCCESS 0 bytes, 0 block(s): OK
/tmp/1GB/part-m-00000 1073741900 bytes, 9 block(s): OK
/tmp/1GB/part-m-00001 1073741900 bytes, 9 block(s): OK
它递归地列出了所有在/ tmp目录中的文件与它们的大小一起。
现在,解析出与最大尺寸的文件,你可以执行以下命令:
HDFS的fsck的/ tmp/-files | grep“/ tmp /”| grep -v“”| gawk'{print $ 2,$ 1;}'|排序-n 此命令执行以下操作:
HDFS的fsck的/ tmp/-files - 它运行在文件夹中的/ tmp/HDFS文件系统检查和每个在/ tmp/ grep的文件寻求报告“/ tmp /“ - greps for/tmp /(我们要搜索的文件夹)。这将使在/ tmp/ 的“grep -v‘’”只有文件和文件夹 - 这将删除输出目录(因为我们只想文件) 徒劳无功{打印$ 2,$ 1;}“ - 这将打印文件大小($ 2),后面跟着文件名($ 1) 排序-n - 这确实对文件的大小,然后在列表的最后一个文件数字排序应与最大尺寸的文件 可以通过管道输出到尾-1获得最大的文件。
例如,我得到的输出为:
107374182400的/ tmp/100GB /一部分-M-0000
有没有办法在我自己的片段 – user2672739
到modiy @ user2672739:看到你的文章的底部编辑链接 –
我的意思说我想改变我的脚本,解决它的方法 – user2672739