Linux:从指定的搜索路径中查找第一个结果
如果我有一个冒号分隔的路径列表,很像$ PATH,但不一定是$ PATH。 我想在该列表中搜索特定的文件名。但是,我只想要第一个匹配的路径。 我考虑过以下linux命令: which:仅适用于二进制文件,仅适用于$ PATH变量 whereis:适用于特定类型的文件,仅适用于$ PATH变量 find:不支持冒号分隔的路径列表,并返回多个结果 以下是我尝试过的一些事情: 我试图whereis通过以下策略使用 env WHEREIS="`which whereis`" PATH="$MY_PATH_LIST" $WHEREIS "$TARGET_FILE" 这几乎可行。但是,它似乎没有返回任意文件类型的结果。它还会以笨拙的格式返回多个结果。 我可以which上班 env WHICH="`which which`" PATH="$MY_PATH_LIST" $WHICH "$MY_TARGET_FILE" 如果有一个命令行选项强制它允许非可执行文件。 然后我尝试解决问题find。首先,我使用正则表达式来扩展路径列表(我用空格替换冒号)。然后我调用find,它正常工作。但是,它会搜索所有路径。如果找到一个好的结果,我似乎无法找到一种方法告诉它尽早停止搜索。 我确实让这个工作了 find ${MY_PATH_LIST//[:]/ } -name "$MY_TARGET_FILE" | head -n 1 但它需要很长时间才能完成,因为find仍在进行详尽的搜索。 我需要这个更快地执行(退出第一个结果),因为它将运行多次,具有不同的参数。 有人有更好的解决方案吗? 请注意,如果全部失败,我可以编写非bash解决方案。现在写我希望使用现有工具的简单解决方案。