Usar resultados do comando Find para chamar vi

5

Existe uma maneira de canalizar a saída desse comando (supondo que haja apenas um arquivo encontrado) para o vi. Eu quero encontrar este comando e, em seguida, chama-lo no vi.

Obrigado.

find . -name 'id.properties'
    
por EdgeCase 19.06.2013 / 14:44

3 respostas

6

Para editar os arquivos impressos por find :

find . -name 'id.properties' -exec vi {} +

Em inglês simples, isso encontra caminhos no diretório atual ( . ) e em todos os subdiretórios com um nome base de id.properties . Com esses arquivos, o executa o comando vi file1 file2 [...] ( -exec vi {} + ). Se houver muitos arquivos (geralmente milhares), ele poderá executar até mais de um comando vi , cada um com vários arquivos, para poder encaixar os comandos no comprimento máximo de comando do sistema. Para forçá-lo a executar o comando para cada arquivo, você poderia usar \; em vez de + .

Para editar o texto impresso por find :

find . -name 'id.properties' | vi -

Isso grava os caminhos (relativos ao diretório atual) de todos os arquivos encontrados (porque por padrão find tem um -print oculto no final) para sua saída padrão, que é < href="http://mywiki.wooledge.org/BashGuide/InputAndOutput#Pipes"> conectado ( | ) à entrada padrão de vi . vi , por sua vez, lê a entrada padrão ( - ) e mostra isso como um arquivo a ser editado.

    
por l0b0 19.06.2013 / 15:13
0

Você pode enviar a saída em um arquivo de texto e abri-lo com o vi.

find . -name 'id.properties' >> /home/<user>/find.txt
vi /home/<user>/find.txt
    
por prophecy201 19.06.2013 / 14:49
-1

Esta resposta parece mais direta frente. Para o seu caso, seria:

vim $(find . -name 'id.properties')
    
por grantbow 18.04.2015 / 00:44