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

如何用grep仅匹配完整路径?路径与文件名已用冒号分隔

解决你的grep筛选问题

嘿,我来帮你搞定这个grep的难题!先看看你整理的这个列表:

1 /c/Users/Michael : tutorial_2.sh
2 /c/Users/Michael : tutorial_1.sh
3 /c/Users/Michael : tutorial_3.sh
4 /c/Users/Michael : tutorial_7.sh
5 /c/Users/Michael/desktop/here : myfile.sh
6 /c/Users/Michael : tutorial_7.sh
7 /c/Users/Michael/desktop/here : myfile.sh
8 /c/Users/Michael : tutorial_7.sh
9 /c/Users/Michael/...

你用冒号(带前后空格)分隔路径和文件名的思路很清晰,之前的方案没用大概率是没精准匹配到这个空格细节。下面给你几个实用的grep命令,覆盖常见的筛选场景:

1. 筛选特定文件名的行

比如要找出所有包含tutorial_7.sh的条目,直接精准匹配冒号后的文件名:

grep ": tutorial_7.sh$" your_list.txt
  • 这里的: (冒号加空格)确保匹配到路径和文件名的分隔符,避免误匹配路径里的潜在冒号
  • $锚定行尾,确保只匹配完整的文件名,不会出现比如匹配tutorial_7.sh.bak这类情况

2. 筛选特定路径的行

如果要找路径包含desktop/here的所有条目,就匹配路径部分加分隔符:

grep "/desktop/here :" your_list.txt

这个命令会精准定位到路径里的/desktop/here,后面跟着冒号和空格,不会误匹配其他相似路径。

3. 找出重复的条目

你的列表里有几个重复的路径+文件名组合,用grep配合sort和uniq就能快速找出:

# 找出所有重复的行
sort your_list.txt | uniq -d

# 如果想统计每个重复条目的出现次数
sort your_list.txt | uniq -c

4. 提取所有文件名(额外小技巧)

如果只想把所有文件名提取出来,用grep的反向匹配也能实现:

grep -o ": .*$" your_list.txt | sed 's/: //'
  • -o只输出匹配的部分,这里匹配冒号加空格到行尾的内容
  • 再用sed去掉前面的: ,就得到纯文件名了

如果还有其他特定的筛选需求,随时说!

内容的提问来源于stack exchange,提问作者Michael91

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:40:58