计算机告诉我文件不存在,而文件确实存在

Computer telling me that files don't exist when they do

提问人:D.R 提问时间:9/18/2019 最后编辑:D.R 更新时间:9/18/2019 访问量:33

问:

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

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

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
bash shell 命令行

评论


答:

1赞 Kaz 9/18/2019 #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>

由于您正在扫描的路径具有空格,因此该方法不可行。调查 的谓词,或使用 shell 循环,或者使用功能更强大的脚本语言。-execfindwhile read ...

评论

0赞 D.R 9/18/2019
谢谢你的回答。您能举个例子吗?我没有那么多可用的工具,我绝对不是专家,但我需要很快解决这个问题。
1赞 Kaz 9/18/2019
例如,循环方法。从这个开始: .该命令尊重行;如果输出为一行,则得到 .while readfind /temp -name "Bob, Emma" | while read path ; do ls -l "$path" ; donereadfinda b cpatha b c