função bash para encontrar um diretório recursivamente

3

Como posso escrever uma função bash que encontre um diretório pai específico. Aqui está minha configuração:

/home/user/dev/project1/branch1/deeply/nested/module/structure

O servidor de aplicativos usado para desenvolvedores está localizado em:

/home/user/dev/project1/branch1/apps/someappserver

Eu gostaria de ter uma função bash que fosse recursiva à raiz da ramificação para copiar rapidamente os módulos compilados para o appserver, executar / parar o appserver, chamar objetivos específicos do maven etc.

Alguma ideia? Cada ramo tem um pom.xml maven que contém informações exatas sobre a versão

    
por Bastl 13.01.2012 / 10:21

3 respostas

2

Que tal:

find_branch_root () {
    cwd=$PWD
    while [ ! -e "$cwd/pom.xml" ] && [ "x$cwd" != x/ ]; do
         cwd='dirname "$cwd"'
    done
    echo "$cwd"
}

Retira diretórios do caminho até que a raiz (/) seja alcançada ou "pom.xml" seja encontrado.

    
por 13.01.2012 / 15:40
1

Crie uma variável de env exportada com um nome como PRJDIR , que tenha um valor como /home/user/dev/project1 . Este env var pode ser facilmente referenciado por outros scripts kike this:

stop-app
cp ${PRJDIR}/modules/* modules/*
start-app
    
por 13.01.2012 / 14:54
0

Talvez um loop while que cd .. a menos / até encontrar um arquivo ou diretório apropriado, então cd na nova estrutura de diretórios, colocando você no lugar correto? Isso não funcionaria?

    
por 13.01.2012 / 10:23