Adicione * curinga após "importante", e você também pode usar o seguinte comando:
vim $(find /home/user -name "important*")
Eu tenho um arquivo, /home/user/important.txt
. Para encontrá-lo, eu uso:
find /home/user -type f -name 'important'
Depois, quero abrir o arquivo no editor Vim usando um canal.
Como posso fazer isso?
Algo como
find /home/user -type f -name 'important' | vi
Adicione * curinga após "importante", e você também pode usar o seguinte comando:
vim $(find /home/user -name "important*")
Você pode usar -exec
junto com find
. Use o seguinte comando:
find /home/user -type f -name 'important' -exec vi {} \;
Uso:
find ./ -name 'important.txt' -print0 | xargs -0 vi
Isso funciona e é simples.
Se você não precisa de um cano, tente isso:
find ./ -name 'important.txt' -exec vi {} \;
locate
é simples assim:
locate -0 important.txt | xargs -0 vi
Você pode usar a primeira opção:
find ./ -name 'important' -print0 | xargs -0 vi
ou como segunda escolha:
find /home/user -type f -name 'important' -exec vi {} \;
Observe que o comando xargs
pode manipular corretamente os espaços dentro dos nomes de arquivos encontrados pelo comando find
sem que você precise se preocupar com resultados inesperados.
e evite a substituição de comandos como segue:
vim $(find /home/user -name "important*")
Isso ocorre porque, na maioria dos casos, você simplesmente não sabe quantos resultados (arquivos) você está esperando ou se esses nomes de arquivos têm espaços neles para evitar resultados indesejados devido a espaços.
Se você deseja obter a saída do comando find (ou seja, a lista de arquivos) no vim, o seguinte terá o vim lido na saída do find:
find /home/user -type f -name 'important' | vi -
Se você deseja abrir os próprios arquivos, então as ações xargs e find -exec são boas opções, como mencionado por outras respostas.
No entanto, para a ação -exec, é melhor usar a seguinte sintaxe:
find /home/user -type f -name 'important' -exec vi {} +
A distinção entre "\;" e "+" no final do comando é o seguinte:
com "\;" uma instância do vim será aberta para cada arquivo encontrado. Isso significa que se 20 arquivos forem encontrados, você terá que fechar o vim 20 vezes para voltar ao shell e não poderá se mover entre os arquivos dentro do vim.
Com "+", uma única instância do vim será aberta com todos os arquivos encontrados. Isso significa que você pode alternar entre os arquivos como buffers e, quando estiver pronto, há apenas uma instância do vim a ser fechada.