我在 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
包含可以在其下找到它的顶级目录。