电脑告诉我文件不存在

时间:2019-09-18 00:34:21

标签: bash shell command-line

在下面的代码中,我找到了两个与某个名称匹配的文件夹,然后尝试列出这些目录中的文件。但是,它告诉我在没有目录的情况下(请参见下面的演示)

可能有很多解决方案,我什至不知道如何描述问题或如何开始使用谷歌搜索。我已经发表了一些帖子,但是解决方案不起作用或者我太愚蠢而无法正确实施它们。

D-XXX-XX-XXX-XXX:renameFoldersProject oppeasnt$ for i in "$(find ./temp -name "Bob, Emma" -type d)"; do (echo "$i";) done
./temp/2019/Bob, Emma
./temp/2020/Bob, Emma
D-XXX-XX-XXX-XXX:renameFoldersProject oppeasnt$ for i in "$(find ./temp -name "Bob, Emma" -type d)"; do (ls "$i";) done
ls: ./temp/2019/Bob, Emma
./temp/2020/Bob, Emma: No such file or directory
D-XXX-XX-XXX-XXX:renameFoldersProject oppeasnt$ ls "./temp/2019/Bob, Emma"
IPPE_Comm_Calc_Received_1.pdf   IPPE_Comm_Calc_Received_2.pdf

1 个答案:

答案 0 :(得分:1)

如果在命令替换处加上引号,则将获得一个巨型令牌;命令的整个输出都填充到var中,从而导致循环的单次迭代

$ for x in "a b c d"; do echo "<$x>"; done
<a b c d>

$ for x in a b c d; do echo "<$x>"; done
<a>
<b>
<c>
<d>

由于要扫描的路径中有空格,因此该方法不可行。研究-exec的{​​{1}}谓词,或者使用find shell循环,或者使用功能更强大的脚本语言。