Se você acabou de executar find
, ele precisa passar por todos os subdiretórios para encontrar todos os arquivos. Parece que você espera que o arquivo esteja com uma profundidade baixa, então você pode passar o argumento -maxdepth
para limitar a profundidade da pesquisa, por exemplo,
find /mnt/build/my_project/ -maxdepth 3 -wholename "*${BUILD_NAME}*/foo.tar.gz" -type f
Alternativamente, você pode pular find
e fazer seu shell fazer a pesquisa. Assumindo que seu shell é bash (isso pode ser ajustado para ksh ou zsh):
shopt -s nullglob
candidates=(
/mnt/build/my_project/*/"$BUILD_NAME"/*/foo.tar.gz
/mnt/build/my_project/*/"$BUILD_NAME"/*/foo.tar.gz
/mnt/build/my_project/*/*/"$BUILD_NAME"/*/foo.tar.gz
/mnt/build/my_project/*/*/"$BUILD_NAME"/*/*/foo.tar.gz
)
case "${#candidates[@]}" in
0) echo "No foo.tar.gz found";;
1) echo "Got foo.tar.gz in ${candidates[0]}"
*) echo "I don't know which foo.tar.gz to pick among" "${candidates[@]}";;
esac
Se você não pode limitar a profundidade da pesquisa, não há nenhuma maneira óbvia de podar partes da árvore. Talvez você possa pular alguns subdiretórios que você sabe que não são úteis, por exemplo para pular todos os diretórios .svn
:
find /mnt/build/my_project/ -name .svn -prune -o -wholename "*${BUILD_NAME}*/foo.tar.gz" -type f -print