当前位置:  开发笔记 > 编程语言 > 正文

如何获取find命令以使用文件名打印文件大小?

如何解决《如何获取find命令以使用文件名打印文件大小?》经验,为你挑选了5个好方法。

如果我发出find命令如下:

$ find . -name *.ear

打印出来:

./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear

我想在命令行上"打印"的是名称和大小:

./dir1/dir2/earFile1.ear  5000 KB
./dir1/dir2/earFile2.ear  5400 KB
./dir1/dir3/earFile1.ear  5400 KB

Leigh Caldwe.. 96

您需要使用-exec或-printf.Printf的工作方式如下:

find . -name *.ear -printf "%p %k KB\n"

-exec功能更强大,允许您执行任意命令 - 因此您可以使用'ls'或'wc'版本打印出文件名以及其他信息.'man find'将显示printf的可用参数,这可以比文件大小做更多.

[edit] -printf不在官方POSIX标准中,因此请检查您的版本是否支持它.但是,大多数现代系统将使用GNU find或类似的扩展版本,因此很有可能实现它.



1> Leigh Caldwe..:

您需要使用-exec或-printf.Printf的工作方式如下:

find . -name *.ear -printf "%p %k KB\n"

-exec功能更强大,允许您执行任意命令 - 因此您可以使用'ls'或'wc'版本打印出文件名以及其他信息.'man find'将显示printf的可用参数,这可以比文件大小做更多.

[edit] -printf不在官方POSIX标准中,因此请检查您的版本是否支持它.但是,大多数现代系统将使用GNU find或类似的扩展版本,因此很有可能实现它.


`-printf`选项在OS X中也不起作用.请参阅http://stackoverflow.com/questions/752818/find-lacks-the-option-printf-now-what.

2> shyam..:
find . -name '*.ear' -exec ls -lh {} \;

只是来自jer.drab.org的回复.节省了精神上转换为MB的时间;)


此版本将为每个文件执行"ls"进程.如果您有许多文件(比如说,超过一千个),您最好通过以下任一方式对其进行优化:`find.-name'*.ear'-exec ls -lh {} + \;`(GNU扩展名)或`find.-name'*.ear'-print0 | xargs -0 ls -lh`.如果您只对文件感兴趣,也可以添加`-type f`(如果您希望包含目录本身而不包含其内容,则添加`-d`到ls).
您的答案不排除目录,因此您最终也会在目录上运行ls,这显然不是正确的选择。
这是一种非常低效的处理方式-不幸的是ash108的注释也不理想。最好使用-printf选项进行查找。

3> Michael Cram..:

一个简单的解决方案是在find中使用-ls选项:

find . -name \*.ear -ls

这为您提供了正常的"ls -l"格式的每个条目.或者,要获得您似乎正在寻找的特定输出,请执行以下操作:

find . -name \*.ear -printf "%p\t%k KB\n"

这将为您提供文件名,后跟大小(KB).



4> dmazzoni..:

使用gnu find,我想这就是你想要的.它找到所有真实文件而不是目录(-type f),并且每个文件都打印文件名(%p),制表符(\ t),大小(千字节)(%k),后缀"KB",然后换行符(\n).

find . -type f -printf '%p\t%k KB\n'

如果printf命令没有按照您希望的方式格式化,可以使用exec,然后使用要在每个文件上执行的命令.使用{}作为文件名,并使用分号(;)终止命令.在大多数shell上,所有这三个字符都应使用反斜杠进行转义.

这是一个简单的解决方案,使用"ls -lh"查找并打印出来,它将以人类可读的形式显示大小(k表示千字节,M表示兆字节):

find . -type f -exec ls -lh \{\} \;

作为另一种选择,"wc -c"将打印文件中的字符数(字节):

find . -type f -exec wc -c \{\} \;



5> 小智..:
find . -name '*.ear' -exec du -h {} \;

这只给你文件大小,而不是所有不必要的东西.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有