You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于子目录对grep命令的输出结果进行排序

问题

我用grep命令查找所有包含指定字符串的文件,命令如下:

grep -Ril "mystring" --exclude-dir=myDir

当前输出未按路径的第一级和第二级子目录(格式为dir<value>/custom<VALUE>)排序,当前输出为:

dir1/customZ/dir1/myfile
dir1/customX/dir1/myfile
dir1/customY/dir1/myfile
dir1/customV/dir2/myfile
dir2/customB/dir2/myfile
dir2/customZZ/dir2/myfile
dir2/customX/dir2/myfile

我期望按dir<value>/custom<VALUE>段排序后的输出为:

dir1/customV/dir2/myfile
dir1/customX/dir1/myfile
dir1/customY/dir1/myfile
dir1/customZ/dir1/myfile
dir2/customB/dir2/myfile
dir2/customX/dir2/myfile
dir2/customZZ/dir2/myfile
解决方案

将grep的输出通过管道传给sort命令,指定按斜杠分隔的第1、2个字段排序即可:

grep -Ril "mystring" --exclude-dir=myDir | sort -t'/' -k1,2

命令说明

  • -t'/':设置字段分隔符为斜杠/,路径会被拆分为多个字段(比如dir1/customZ/dir1/myfile会拆成dir1、customZ、dir1、myfile四个字段)
  • -k1,2:指定仅基于第1到第2个字段(即dir<value>/custom<VALUE>部分)按字典序排序,完全匹配期望的排序效果。

内容的提问来源于stack exchange,提问作者N. J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:32