繁体   English   中英

如何在/usr目录中找到最长的头文件(.h)

[英]How to find the longest header file(.h) in the /usr directory

如何在 /usr 目录中找到最大的总大小(按长度)头文件 (.h)? 也在子目录中搜索。 我这样做如下:

find . - name *.h | xargs awk | sort -n | less .

但这仅输出扩展名为 .h 的所有文件及其尺寸

使用 GNU 工具:

find /usr -type f -name "*.h" -printf "%s %p\0" | sort -zrnk1,1 | head -zn1 | tr '\0' '\n'

这允许带有换行符的文件名, find输出一个 NUL 终止的字符串,以下命令使用 NUL 作为分隔符而不是换行符。 在管道的末尾, tr将分隔符转换回换行符。

如果您只想要文件名,请添加cut以删除第一个以空格分隔的字段:

find /usr -type f -name "*.h" -printf "%s %p\0" | sort -zrnk1,1 | head -zn1 | 
  tr '\0' '\n' | cut -d' ' -f2-

就像是

 find /usr -name "*.h" -printf "%s\t%p\n" | awk '$1 > maxsize { maxsize = $1; maxline = $0 } END { print maxline }'

(当然,假设所有文件的名称中都没有换行符)

或者如果您有可用的GNU datamash

find /usr -name "*.h" -printf "%s\t%p\n" | datamash -f max 1 | cut -f1,2

使用 GNU find, -printf命令可以让您打印有关文件的大量信息,包括以字节为单位的大小 ( %s ) 和名称 ( %p )。 从中找到最大值很容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM