将 windows 文件名更改为 bash 文件名

Posted

技术标签:

【中文标题】将 windows 文件名更改为 bash 文件名【英文标题】:change windows filenames to bash filenames 【发布时间】:2014-07-23 18:34:34 【问题描述】:

我在 Windows 上使用 gitbash 作为我的主控制台。通常我想从资源管理器中复制文件名并将其用于 git 命令,这通常不起作用,因为 git 有时需要 /c/directory/directory/filename 形式的文件名,而不是 c:\directory\directory\filename。

我通常必须手动编辑文件名/路径以使其格式正确,如果文件的目录很深,这很烦人。

我写了一个 sed 命令来修改字符串为正确的格式:

sed 's:\\:/:g' | sed 's:\(.\)::/\1:g'

有没有办法让我把它变成一个函数或其他东西,这样我就可以做类似...

git add convert("c:\blah\blah\myfile.txt")

实际运行的是

git add /c/blah/blah/myfile.txt

【问题讨论】:

Windows PATH to posix path conversion in bash的可能重复 这不是那个问题的重复,因为我正在寻求一种以一种很好的方式从 bash 调用 sed 命令的方法。我不是要求像那个问题那样的 sed 命令 Opposite of this - convert bash path to windows 【参考方案1】:

一种方式:

function git_add 
    git add "$(exec sed 's|\\|/|g; s|\(.\):|/\1|g' <<< "$1")"

然后做:

git_add "c:\blah\blah\myfile.txt"

另一种方式:

function convert 
    sed 's|\\|/|g; s|\(.\):|/\1|g' <<< "$1"


git add "$(convert "c:\blah\blah\myfile.txt")"

【讨论】:

我想在命令行上做所有事情,而不仅仅是 git,所以想要一些更通用的东西【参考方案2】:

cygpath 在 gitbash 发行版中,所以我使用 cygpath -u "c:\foo.xml"

我目前在 Win10 上运行 gitbash 2.31.1

【讨论】:

以上是关于将 windows 文件名更改为 bash 文件名的主要内容,如果未能解决你的问题,请参考以下文章

将CWD更改为文件的目录

将文件从 .cfg 更改为 .txt [重复]

使用 bash 编辑多个文件

在 Windows 批处理文件中将反斜杠更改为正斜杠

如何将 bash 脚本代码更改为 Python [关闭]

如何将 \\ 更改为 \