I have several projects configured by a pom.xml or similar.
I would like to use the linux file command to locate these projects e.g. by find -name pom.xml
.
This however takes some time because of the deep paths. I would like to use find -prune
to stop searching in subdirectories when I already find the file, but prune only stops on matched directories not on matched files.
Is there a way to get find to stop descending when the directory aleady contains a searched file?
For clarification; this is what I do without 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
}
But I'd rather use a simple way with find so it is better understandable/extendable for others
find . -name pom.xml -print -quit
If you want to speed up the search, you can also work with locate
, which queries a database instead of scanning the file system.
You can update the database using by running updatedb
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With