首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chdir到带有空格的目录

chdir到带有空格的目录
EN

Stack Overflow用户
提问于 2015-03-07 05:14:45
回答 3查看 830关注 0票数 0

我正在运行以下命令:

代码语言:javascript
复制
cd $(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')

它返回如下内容:

代码语言:javascript
复制
/tmp/nolio_temp/MyNumb-15_WeCo - MX

当尝试cd到这个输出时,我不能,因为有空格。

有没有办法在存在空格的情况下对find返回的目录执行cd操作?

EN

回答 3

Stack Overflow用户

发布于 2015-03-07 05:16:53

只需引用它,它就会起作用:

代码语言:javascript
复制
cd "$()"

在您的案例中:

代码语言:javascript
复制
cd "$(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')"

这样,您就可以告诉cd使用双引号内的内容作为参数。

票数 2
EN

Stack Overflow用户

发布于 2015-03-07 06:36:21

这很冗长,但以下是在奇怪的角落情况下正确工作的额外偏执:

代码语言:javascript
复制
IFS= read -r -d '' dirname \
  < <(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX' -print0)
cd "$dirname"

这将处理以空格结尾的文件名、包含换行符的文件名(包括$()将吃掉的尾随换行符)、find仅返回一个结果的情况,以及其他类似的奇怪情况。

票数 1
EN

Stack Overflow用户

发布于 2015-03-07 06:41:14

在给fedorqui’s answer的评论中,您写道,您希望避免在命令中使用双引号。我很想知道为什么,但您可以这样做,至少在bash中是这样

代码语言:javascript
复制
eval 'cd '$(find /tmp/nolio_temp -type d \
  -wholename '/tmp/nolio_temp/MyNumb-*_WeCo - MX' |
    sed -e 's/ /\\ /g')

但是要非常小心恶意的文件名。

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

https://stackoverflow.com/questions/28907783

复制
相关文章

相似问题

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