como encontrar em um diretório com um padrão de mudança?

2

Eu tenho uma estrutura de pastas assim:

/domains/some-domain-1/applications/j2ee-apps
/domains/some-domain-2/applications/j2ee-apps
/domains/some-domain-3/applications/j2ee-apps

Qual é a melhor maneira de lidar com pastas como esta, onde as pastas pai e filho são as mesmas? Por exemplo, se eu quisesse cd para uma pasta primo j2ee-apps de outra pasta de domínio, existe uma maneira fácil? E se eu quisesse executar um ls do nível superior e obter tudo nas pastas inferiores (por exemplo: j2ee-apps )?

Alguém tem algum conselho inteligente sobre a melhor forma de trabalhar com isso?

    
por javamonkey79 08.10.2011 / 02:39

2 respostas

3

Você pode definir uma variável para conter a parte da variante. Assim:

domain='some-domain-1'
cd /domains/$domain/applications/j2ee-apps
domain='some-domain-2'
cd /domains/$domain/applications/j2ee-apps

Como o comando cd é o mesmo, você pode acessá-lo no seu shell com as teclas de seta.

Dependendo da frequência com que você faz isso, convém definir uma função em .bashrc .

cdj2(){
  cd /domains/"$1"/applications/j2ee-apps
}

Então você pode cdj2 some-domain-1 .

Shell globbing (também conhecido como ) pode cuidar da outra parte (veja resposta de Stéphane Gimenez ). O comando find seria útil se as estruturas de diretório não fossem exatamente as mesmas, mas você ainda deseja ver todos os arquivos correspondentes a um determinado nome.

find /domains -name 'j2ee-apps' -exec ls {} \;

    
por 08.10.2011 / 02:56
5

Para ls , pode-se usar o seguinte para obter a lista completa:

ls /domains/*/applications/j2ee-apps

Para mudar de um ramo para outro, temo que não haja uma maneira fácil de fazer o que você quer.

    
por 08.10.2011 / 02:56