gpt4 book ai didi

linux - shell 脚本无法进入包含空格的目录

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:00 26 4
gpt4 key购买 nike

我有一个 shell 脚本,它循环进入每个目录并找到一个文件。我遇到的问题是 shell 脚本无法进入 cd 到包含空间的目录。这是示例脚本。

第一种方法:

for dir in "$(find /usr/tom/public/junk -maxdepth 3 -type f -name testfile)"; do
cd "$(dirname "$dir")"
printf "%-54s" $(basename $PWD)
done

第二种方法:

find "/usr/tom/public/junk" -maxdepth 3 -type f -name testfile -print |
while IFS= read -r dir
do
cd "$(dirname "$dir")"
printf "%-54s" $(basename $PWD)
done

错误:没有这样的文件或目录(因为某些目录包含空格)

我的要求是 -> 当在目录中找到“测试”文件时,它必须删除该目录。

我在 ubuntu 上运行这个脚本。奇怪的是,这段代码在我的 Mac 上运行但在 ubuntu 服务器上不起作用。我不知道为什么它不能在 ubuntu 上运行。请帮我。

最佳答案

对目录名称使用双引号。

mahendra@test-Ubuntu:~$ cd /test
mahendra@test-Ubuntu:-Ubuntu:/opt$ cd "new test"

由于您要连接的文件夹名称中有空格,因此您必须用引号将名称括起来,以便 Shell 正确读取它(作为一个名称)。

现在您需要检查如何将 ""传递给 shell 脚本中的目录。

另一种方法是使用反斜杠

cd test\ Text\ 2/

后跟空格的反斜杠明确表示空格。

建议:在linux下不要创建有空格的目录。

关于linux - shell 脚本无法进入包含空格的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com