找到ftsopen没有这样的文件或目录

时间:2014-08-14 20:15:57

标签: bash unix

我可以在mac中的TextMate中执行我的代码没有问题,但是如果我尝试在终端中执行包含此命令的相同代码,就像这样“./Test.sh”我有一个错误:

find: ftsopen: No such file or directory

代码:

 dossier="r-repos"
 dossierpath=$(find ./ -name "${dossier}")
 echo "$dossierpath"

如果我将脚本文件移动到另一个文件夹,是否必须更改“./”?因为只有移动我的脚本才会出现此错误。

非常感谢

2 个答案:

答案 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作为输出。

如有必要,这两个链接可能会提供一些额外的帮助。

http://content.hccfl.edu/pollock/unix/findcmd.htm

http://linux.about.com/od/commands/l/blcmdl1_find.htm