首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git ls-文件,如何转义文件路径中的空格?

git ls-文件,如何转义文件路径中的空格?
EN

Stack Overflow用户
提问于 2016-02-10 21:24:10
回答 2查看 2.2K关注 0票数 13

在我们引入.gitignore文件之前,大量文件被签入我们的git中。我现在正试图用:

代码语言:javascript
复制
git rm --cached `git ls-files -i --exclude-from=.gitignore`

问题是,许多文件路径中都有空格。

例如:

代码语言:javascript
复制
......
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg12.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg13.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg14.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg15.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg16.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg17.png.meta
Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg18.png.meta
.......

在一个完整的文件中有一个很大的空间,我需要处理掉。

我在寻找一种优雅的方式:

  • 答:例如,用"\“来转义空格 Assets/Aoi\ Character Pack/Viewer/Resources/Aoi/Viewer\ BackGrounds/bg18.png.meta

-或者-

  • git ls-files从我的文件列表中抽取出来,所有文件都整齐地依偎在引号之间。 'Assets/Aoi Character Pack/Viewer/Resources/Aoi/Viewer BackGrounds/bg18.png.meta'

-编辑-

到目前为止,我已经尝试过git ls-files -i --exclude-from=.gitignore | sed 's/\ /\\\ /g'

虽然这令人高兴地输出了文件路径,就像我所期望的那样,随着空格的转义……当我试图执行

代码语言:javascript
复制
git rm --cached `git ls-files -i --exclude-from=.gitignore | sed 's/\ /\\\ /g'`

我得到-错误:未知开关‘\’

我以为烟斗出了点问题。

EN

回答 2

Stack Overflow用户

发布于 2016-02-11 01:28:30

规范的方式:

代码语言:javascript
复制
git ls-files -z | xargs -0 git rm

另一种方式是:

代码语言:javascript
复制
git ls-files | xargs -d '\n' git rm
票数 14
EN

Stack Overflow用户

发布于 2016-02-11 02:04:46

雷切尔·邓肯的回答让我朝着正确的方向前进,我找到了一个可行的解决方案!我还从https://superuser.com/questions/401614/inserting-string-from-xargs-into-another-string那里借来了一些技巧

代码语言:javascript
复制
git ls-files -i --exclude-from=.gitignore | tr '\n' '\0' | xargs -0 -L1 -I '$' git rm --cached '$'

上面的脚本编译了现在属于.gitignore排除规则的所有版本git文件的列表,在每个std行(文件路径)周围包装引号,然后用修改后的字符串执行git rm --cached命令。

我喜欢这种方式,因为终端会对它从源代码管理中删除的每个文件进行确认。

干杯!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35326218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档