Linux 查找但不要下降到包含搜索文件的目录中
我有几个由pom.xml或类似文件配置的项目 我想使用linux文件命令来定位这些项目,例如通过Linux 查找但不要下降到包含搜索文件的目录中,linux,bash,find,Linux,Bash,Find,我有几个由pom.xml或类似文件配置的项目 我想使用linux文件命令来定位这些项目,例如通过find-name pom.xml。 然而,由于路径较深,这需要一些时间。当我已经找到文件时,我想使用find-prune停止在子目录中搜索,但是prune只在匹配的目录上停止,而不在匹配的文件上停止 当目录aleady包含搜索的文件时,有没有办法让find停止下降 要求澄清;这就是我在没有发现的情况下所做的: pfind() { parent=$1 && shift
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此操作在第一个匹配文件上停止,但我想查找所有文件。我也考虑过定位,但接下来我必须确保它被更新(这可能会破坏性能)并过滤结果