提问人:D.R 提问时间:9/18/2019 最后编辑:D.R 更新时间:9/18/2019 访问量:33
计算机告诉我文件不存在,而文件确实存在
Computer telling me that files don't exist when they do
问:
在下面的代码中,我找到两个与特定名称匹配的文件夹,然后尝试列出这些目录中的文件。但是,它告诉我没有这样的目录,当有(见下面的演示)
可能有很多解决方案,我什至不知道如何描述问题或如何开始谷歌搜索。我发表了一些帖子,但要么解决方案不起作用,要么我太愚蠢而无法正确实施它们。
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赞
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 循环,或者使用功能更强大的脚本语言。-exec
find
while read ...
评论
0赞
D.R
9/18/2019
谢谢你的回答。您能举个例子吗?我没有那么多可用的工具,我绝对不是专家,但我需要很快解决这个问题。
1赞
Kaz
9/18/2019
例如,循环方法。从这个开始: .该命令尊重行;如果输出为一行,则得到 .while read
find /temp -name "Bob, Emma" | while read path ; do ls -l "$path" ; done
read
find
a b c
path
a b c
评论