如何查找Linux内核fs目录中最大与最小的.c文件
解决Linux内核fs目录下查找最大/最小.c文件的问题
核心问题分析
你之前的命令错误在于:find输出的文件路径通过管道传给du时,du默认不会从标准输入读取文件名进行统计,而是直接处理当前目录,所以才会返回目录和非.c文件的结果。
正确命令示例
查找最大的.c文件
find . -type f -name '*.c' -exec du -h {} + | sort -hr | head -1
查找最小的.c文件
find . -type f -name '*.c' -exec du -h {} + | sort -h | head -1
命令解释
find . -type f -name '*.c':递归查找当前目录下所有后缀为.c的普通文件,确保只处理目标文件类型。-exec du -h {} +:让find把找到的文件批量传给du,-h参数让文件大小以人类可读的格式显示(如KB/MB)。sort -hr:按文件大小逆序排序(-h支持人类可读格式排序,-r表示逆序),搭配head -1取最大的那个文件。sort -h:按文件大小正序排序,搭配head -1取最小的那个文件。
其他问题说明
- 用
-regex '*.c'无效:find的-regex是匹配整个文件路径,且正则语法要求用.*\.c$来匹配以.c结尾的路径,远不如-name '*.c'简洁精准,没必要用。 - 跳过
du -ah无文件输出:先确认当前工作目录是否是Linux内核的fs目录,可执行pwd检查;若目录正确,可能是文件名匹配问题,可尝试-iname '*.c'忽略大小写(不过内核源码中基本都是小写.c)。
内容的提问来源于stack exchange,提问作者canor421
相关产品推荐
相关产品推荐

