Linux 查找但不要下降到包含搜索文件的目录中

Linux 查找但不要下降到包含搜索文件的目录中,linux,bash,find,Linux,Bash,Find,我有几个由pom.xml或类似文件配置的项目 我想使用linux文件命令来定位这些项目,例如通过find-name pom.xml。 然而,由于路径较深,这需要一些时间。当我已经找到文件时,我想使用find-prune停止在子目录中搜索,但是prune只在匹配的目录上停止,而不在匹配的文件上停止 当目录aleady包含搜索的文件时,有没有办法让find停止下降 要求澄清;这就是我在没有发现的情况下所做的: pfind() { parent=$1 && shift

我有几个由pom.xml或类似文件配置的项目

我想使用linux文件命令来定位这些项目,例如通过
find-name pom.xml
。 然而,由于路径较深,这需要一些时间。当我已经找到文件时,我想使用
find-prune
停止在子目录中搜索,但是prune只在匹配的目录上停止,而不在匹配的文件上停止

当目录aleady包含搜索的文件时,有没有办法让find停止下降

要求澄清;这就是我在没有发现的情况下所做的:

pfind() {
    parent=$1 && shift

    for file in "$@" ; do
        path=$parent/$file
        if [ -e "$path" ] ; then
            echo "$path"
            exit 0
        fi
    done

    for dir in $(echo $parent/*) ; do
       if [ -d "$dir" ] ; then
           pfind "$dir" "$@"
       fi
    done
}
但是我更愿意使用一种简单的方法来查找,这样对其他人来说它更容易理解/扩展

find . -name pom.xml -print -quit
如果要加快搜索速度,还可以使用
定位
,它可以查询数据库而不是扫描文件系统

您可以通过运行一行python来更新数据库:

python -c 'import os; print "\n".join(p for p, d, f in os.walk(os.sys.argv[1], topdown=True) if os.sys.argv[2] in f and list(d.remove(i) for i in list(d)))' $PWD pom.xml

os.walk idea from

此操作在第一个匹配文件上停止,但我想查找所有文件。我也考虑过定位,但接下来我必须确保它被更新(这可能会破坏性能)并过滤结果