Linux chdir到带有空格的目录

Linux chdir到带有空格的目录,linux,unix,find,cd,Linux,Unix,Find,Cd,我正在运行以下命令: cd $(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX') 它返回如下内容: /tmp/nolio_temp/MyNumb-15_WeCo - MX 当尝试将cd写入此输出时,我无法执行此操作,因为有空格 是否有任何方法可以将cd复制到返回的目录中,即使存在空格,也可以找到该目录?只需将其引用即可: cd "$()" 就你而言: cd "$(find /tmp/my_tem

我正在运行以下命令:

cd $(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')
它返回如下内容:

/tmp/nolio_temp/MyNumb-15_WeCo - MX
当尝试将
cd
写入此输出时,我无法执行此操作,因为有空格


是否有任何方法可以将
cd
复制到
返回的目录中,即使存在空格,也可以找到该目录?

只需将其引用即可:

cd "$()"
就你而言:

cd "$(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')"

通过这种方式,您可以告诉
cd
将双引号中的内容用作参数。

只需将其引用即可:

cd "$()"
就你而言:

cd "$(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')"

通过这种方式,您可以告诉
cd
将双引号中的内容用作参数。

只需将其引用即可:

cd "$()"
就你而言:

cd "$(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')"

通过这种方式,您可以告诉
cd
将双引号中的内容用作参数。

只需将其引用即可:

cd "$()"
就你而言:

cd "$(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX')"

通过这种方式,您可以告诉
cd
使用双引号中的内容作为参数。

这是一个很好的解释,但以下是在奇数情况下正确工作的额外偏执:

IFS= read -r -d '' dirname \
  < <(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX' -print0)
cd "$dirname"
IFS=read-r-d''目录名\

<这是一个很好的例子,但以下是在奇怪的情况下正确工作的额外偏执:

IFS= read -r -d '' dirname \
  < <(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX' -print0)
cd "$dirname"
IFS=read-r-d''目录名\

<这是一个很好的例子,但以下是在奇怪的情况下正确工作的额外偏执:

IFS= read -r -d '' dirname \
  < <(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX' -print0)
cd "$dirname"
IFS=read-r-d''目录名\

<这是一个很好的例子,但以下是在奇怪的情况下正确工作的额外偏执:

IFS= read -r -d '' dirname \
  < <(find /tmp/my_temp/ -type d -wholename '/tmp/my_temp/MyNumb-*_WeCo - MX' -print0)
cd "$dirname"
IFS=read-r-d''目录名\
<在对的评论中,您写道希望避免在命令中使用双引号。我很想知道为什么,但你至少可以在
bash
中用

eval 'cd '$(find /tmp/nolio_temp -type d \
  -wholename '/tmp/nolio_temp/MyNumb-*_WeCo - MX' |
    sed -e 's/ /\\ /g')
但是要非常小心恶意文件名。

在对的评论中,您写道要避免在命令中使用双引号。我很想知道为什么,但你至少可以在
bash
中用

eval 'cd '$(find /tmp/nolio_temp -type d \
  -wholename '/tmp/nolio_temp/MyNumb-*_WeCo - MX' |
    sed -e 's/ /\\ /g')
但是要非常小心恶意文件名。

在对的评论中,您写道要避免在命令中使用双引号。我很想知道为什么,但你至少可以在
bash
中用

eval 'cd '$(find /tmp/nolio_temp -type d \
  -wholename '/tmp/nolio_temp/MyNumb-*_WeCo - MX' |
    sed -e 's/ /\\ /g')
但是要非常小心恶意文件名。

在对的评论中,您写道要避免在命令中使用双引号。我很想知道为什么,但你至少可以在
bash
中用

eval 'cd '$(find /tmp/nolio_temp -type d \
  -wholename '/tmp/nolio_temp/MyNumb-*_WeCo - MX' |
    sed -e 's/ /\\ /g')


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

在避免双引号字符的同时,有没有办法做到这一点?单引号不起作用。单引号不会扩展表达式。或者,您可以转义空格,但这看起来更干净。只有在保证只找到一个结果时才安全。@DaxDurax,您可以扩展为什么要避免双引号吗?可能有更好的方法可以达到预期的效果。有没有一种方法可以在避免双引号字符的同时做到这一点?单引号不起作用。单引号不会扩展表达式。或者,您可以转义空格,但这看起来更干净。只有在保证只找到一个结果时才安全。@DaxDurax,您可以扩展为什么要避免双引号吗?可能有更好的方法可以达到预期的效果。有没有一种方法可以在避免双引号字符的同时做到这一点?单引号不起作用。单引号不会扩展表达式。或者,您可以转义空格,但这看起来更干净。只有在保证只找到一个结果时才安全。@DaxDurax,您可以扩展为什么要避免双引号吗?可能有更好的方法可以达到预期的效果。有没有一种方法可以在避免双引号字符的同时做到这一点?单引号不起作用。单引号不会扩展表达式。或者,您可以转义空格,但这看起来更干净。只有在保证只找到一个结果时才安全。@DaxDurax,您可以扩展为什么要避免双引号吗?可能有更好的方法来实现所需的结果。引用是正确的做法,但如果您只想在该目录中执行命令,也可以使用-execdir命令。然后您需要匹配目录中的文件或期望在父目录中执行的文件。您希望如何处理
find
命令返回多个结果的情况?引用是正确的做法,但如果您只希望在该目录中执行命令,还可以-execdir命令。然后您需要匹配目录中的文件或期望在父目录中执行的文件。您希望如何处理
find
命令返回多个结果的情况?引用是正确的做法,但如果您只希望在该目录中执行命令,还可以-execdir命令。然后您需要匹配目录中的文件或期望在父目录中执行的文件。您希望如何处理
find
命令返回多个结果的情况?引用是正确的做法,但如果您只希望在该目录中执行命令,还可以-execdir命令。然后需要匹配目录中的文件或期望在父目录中执行的文件。如果
find
命令返回多个结果,您希望如何处理这种情况?