我有一个大型的目录树构建。标准find
搜索会在一两分钟后找到文件。我希望在几秒钟内。
我需要找到一个名为的文件foo.tar.gz
。该文件可以位于各种目录中:
/mnt/build/my_project/master/<BUILD_NAME>/foo.tar.gz
/mnt/build/my_project/master/<BUILD_NAME>/<PREFIX>/foo.tar.gz
/mnt/build/my_project/main/<BRANCH>/<BUILD_NAME>/foo.tar.gz
/mnt/build/my_project/main/<BRANCH>/<BUILD_NAME>/PREFIX>/foo.tar.gz
/mnt/build/my_project/side/<BUILD_NAME>/foo.tar.gz
/mnt/build/my_project/side/<BUILD_NAME>/<PREFIX>/foo.tar.gz
我已经尝试了许多if [[ -f .. ]]
语句,这些语句确实减少了脚本的运行时间,但是涉及的案例太多了,维护脚本变得很麻烦。
我也尝试过以下find
语句:
find /mnt/build/my_project/ -ipath "*${BUILD_NAME}*" -name foo.tar.gz -type f
find /mnt/build/my_project/ -wholename "*${BUILD_NAME}*/foo.tar.gz" -type f
如果用户提供一个目录,我如何有效地搜索所有目录树BUILD_NAME
?
谢谢!