在下面的代码中,我找到了两个与某个名称匹配的文件夹,然后尝试列出这些目录中的文件。但是,它告诉我在没有目录的情况下(请参见下面的演示)
可能有很多解决方案,我什至不知道如何描述问题或如何开始使用谷歌搜索。我已经发表了一些帖子,但是解决方案不起作用或者我太愚蠢而无法正确实施它们。
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
答案 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循环,或者使用功能更强大的脚本语言。