我可以在mac中的TextMate中执行我的代码没有问题,但是如果我尝试在终端中执行包含此命令的相同代码,就像这样“./Test.sh”我有一个错误:
find: ftsopen: No such file or directory
代码:
dossier="r-repos"
dossierpath=$(find ./ -name "${dossier}")
echo "$dossierpath"
如果我将脚本文件移动到另一个文件夹,是否必须更改“./”?因为只有移动我的脚本才会出现此错误。
非常感谢
答案 0 :(得分:0)
./
指的是您正在执行的当前文件夹。如果您将其移动到另一个文件夹,它将尝试在您将其移动到的文件夹中找到$dossier
。
将./
替换为您要搜索的文件夹的完整路径,它应该可以正常工作。
答案 1 :(得分:0)
find
命令搜索目录层次结构中的文件。通过将目录切换到您要查找的文件/文件夹,您可以找到它。为了让您的脚本在整个系统中搜索r-repos,请删除“。”。在正斜线前面。
find / -name foo
这将搜索整个系统的任何文件 命名为foo并显示其路径名。我们在这里使用 criterion -name使用参数foo告诉find执行名称 搜索文件名foo。输出可能如下所示:
/home/wpollock/foo
/home/ua02/foo
/tmp/foo
如果find找不到任何匹配的文件,则不会产生任何输出。
以下是我对您的脚本进行的编辑示例以及名为“游戏”的文件夹。
#!/bin/bash
dossier="Games"
dossierpath=$(find ./ -name "${dossier}")
echo "$dossierpath"
root@kali:~/Desktop# '/root/Desktop/help'
这会使输出空白,因为我的桌面名称游戏中没有文件/文件夹。
当我编辑脚本时不包括。 ,它很容易找到它。
#!/bin/bash
dossier="Games"
dossierpath=$(find / -name "${dossier}")
echo "$dossierpath"
root@kali:~/Desktop# '/root/Desktop/help'
/root/Games
使用/ root / Games作为输出。
如有必要,这两个链接可能会提供一些额外的帮助。