O que funcionou para mim foi o seguinte script:
#!/bin/bash
file_of_interest="CMakeList.txt"
latest_directory_wih_match=""
for current_directory in $(find -type d);
do
if [[ (${latest_directory_wih_match} == "") || (! ${current_directory} == ${latest_directory_wih_match}*) ]];
then
if [ -f ${current_directory}/${file_of_interest} ]
then
latest_directory_wih_match=${current_directory}
echo ${latest_directory_wih_match}/${file_of_interest}
fi
fi;
done
@ resposta da sobremesa funcionou para o exemplo mínimo acima também. Usá-lo na minha estrutura de pastas real (~ 4000 pastas) ainda estava dando resultados errados. Eu não tenho certeza porque, para ser honesto.
Quando eu tentei a solução do @ muru, ela não parou de ser executada. Eu acho que a função chamando em si não está abortando corretamente? Não tenho certeza sobre o motivo aqui também.
PS: Em um Projeto CMake real, o arquivo é chamado de "CMakeLists.txt" (observe os extras no final). Vi esse erro apenas depois que as respostas já foram fornecidas.