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

如何用通用正则从字符串中提取Linux绝对文件路径?

提取Linux命令行中的通用绝对文件路径

问题背景

之前用两个针对性的grep正则提取绝对路径:

grep -o '/media/ismail/.*'
grep -o 'file:\S*'

但这类写法依赖/media/ismail/这类固定前缀,没法通用匹配所有Linux绝对路径,需要一个能适配各种场景的正则表达式。

示例输入

evince /media/ismail/SSDWorking/book-collection/_Books/kids/Coping Skills.pdf
/usr/lib/libreoffice/program/soffice.bin --impress file:///home/ismail/Desktop/LibreOffice%20Impress.odp --splash-pipe=5
/usr/bin/gjs /usr/bin/com.github.johnfactotum.Foliate /media/ismail/SSDWorking/book-collection/_Books/kids/Coping Skills.epub
mpv /media/ismail/8TBRaid0/_IslamNaseed/_JunaidJamshed/Mera Dil Badal De.mp3

通用解决方案

用支持扩展正则的grep命令,同时兼容带空格的路径和file://前缀:

grep -Eo '(file:///)?/[^[:space:]]*(\s[^[:space:]]*)*'

正则说明

  • (file:///)?:匹配可选的file:///协议前缀
  • /:锚定Linux绝对路径的起始斜杠
  • [^[:space:]]*:匹配连续的非空格字符
  • (\s[^[:space:]]*)*:匹配路径中出现的空格+非空格字符组合,兼容带空格的文件名

执行结果

/media/ismail/SSDWorking/book-collection/_Books/kids/Coping Skills.pdf
file:///home/ismail/Desktop/LibreOffice%20Impress.odp
/media/ismail/SSDWorking/book-collection/_Books/kids/Coping Skills.epub
/media/ismail/8TBRaid0/_IslamNaseed/_JunaidJamshed/Mera Dil Badal De.mp3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:09