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

如何用Shell脚本移除文件中的路径信息

解决方案

这里有几个简单高效的方法帮你把result.out文件里的完整路径替换成仅文件名,根据你的使用场景选择即可:

方法1:使用sed命令(终端快速处理)

sed是Linux/macOS下常用的文本处理工具,一行命令就能完成替换:

Linux 版本:

sed -i 's/\((.*\/)\?\([^\/)]\+\)\)/(\2)/g' result.out

macOS 版本(注意-i参数需要空后缀):

sed -i '' 's/\((.*\/)\?\([^\/)]\+\)\)/(\2)/g' result.out

正则说明:

  • \((.*\/)\?:匹配括号开头,以及可选的路径部分(从开头到最后一个/)
  • \([^\/)]\+\):捕获文件名部分(不包含/和右括号)
  • (\2):用捕获到的文件名替换原内容,保留括号

方法2:使用Python脚本(跨平台更灵活)

如果你更熟悉Python,或者需要在Windows环境下处理,这个脚本会更通用:

import re

# 读取文件内容
with open('result.out', 'r', encoding='utf-8') as input_file:
    content = input_file.read()

# 替换路径为文件名
updated_content = re.sub(r'\((.*\/)?([^\/)]+)\)', r'(\2)', content)

# 写回文件
with open('result.out', 'w', encoding='utf-8') as output_file:
    output_file.write(updated_content)

运行这个脚本后,result.out里的所有带路径的文件名都会被替换成仅文件名,完全符合你的需求。

方法3:使用awk命令(适合复杂文本处理场景)

如果你习惯用awk处理文本,也可以用这个命令:

awk '{gsub(/\((.*\/)?([^\/)]+)\)/, "(" "\\2" ")")}1' result.out > temp_file && mv temp_file result.out

这个命令会先把处理后的内容写入临时文件,再替换原文件,避免直接修改时的意外问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:59