在一个目录中查找文件后停止 find 命令

在一个目录中查找文件后停止 find 命令

我在 Korn 脚本中有一个命令,如下所示,

find <path1> <path2> <path3> -name filename

之后,它将输出存储在 txt 文件中。使用这个 txt 文件它会执行一些操作。

有没有什么方法可以使用它,如果在path1中找到所需的文件,那么find命令将不会在path2和path3中搜索并且会停止?

我尝试使用 -quit 选项,该选项似乎-quit不适用于 IBM AIX 版本的 find。locate系统中没有任何命令。我也没有安装权限。

使用管道选项head -1可以完成这项工作,但如果路径2和路径3中没有其他文件并且文件仅在路径1中,那么它仍然会全力以赴并搜索所有路径。

答案1

我处理此问题的方法是循环遍历目录,find在每个目录中运行直到匹配为止。

for dir in path1 path2 path3
do
    echo "Searching $dir" >&2
    match=$(find "$dir" -type f -name "filename" 2>/dev/null)
    test -n "$match" && echo "$match" && break
done

echo如果您想要静默解决方案,可以删除这两个语句。退出循环时,如果$match不为空,则它包含完整路径名并$dir包含可以在其下找到它的顶级目录。

相关内容