Acesse um arquivo localizado com find

2

Em muitos casos, depois de encontrar um arquivo usando o comando find , quero abrir o arquivo ou criá-lo ou talvez imprimi-lo. Como posso operar no resultado do achado? Por exemplo,

: find . -name "myfile.txt"
./docs/myfile.txt

: find . -name "myfile.txt" | less

não funciona porque alimenta a string "./docs/myfile.txt" para menos, não o conteúdo do arquivo no caminho especificado.

    
por Tyler Durden 27.05.2016 / 17:04

4 respostas

2

Semelhante a @coffeeMug, esta é a maneira mais atualizada de fazer isso, já que aparentemente é mais rápida:

find . -name "*.log" -exec ls -l '{}' +

Eu também vou te apontar para CommandLineFu , que é sempre útil com essas coisas.

    
por 27.05.2016 / 17:19
2

less $(find . -name myfile.txt)

less 'find . -name myfile.txt'

O primeiro é, acredito, compatível com POSIX e aninhado. O segundo, acredito, é mais portátil.

    
por 27.05.2016 / 17:41
2

Você pode conseguir isso usando o sinalizador -exec do anúncio:

find . -name "*.log" -exec ls -l '{}' \;

Neste exemplo, encontrar pesquisas para todos os arquivos de log no diretório atual e, em seguida, liste-os usando ls -l . No seu caso, você deve substituir ls por less . Veja a seção ACTION da página man do achado aqui página do manual do find (1) .

    
por 27.05.2016 / 17:15
0

Não há como capturar automaticamente a saída do comando anterior (não em qualquer ambiente normal). Mas se você selecionar manualmente a saída com o mouse, então você pode executar

less 'xsel'

ou, se a saída contiver espaços ou caracteres curinga e você não estiver executando zsh,

less "'xsel'"

Se você não se importar em executar o comando novamente, pressione Acima e adicione less ' no início da linha e ' no final (ou less "' no início da linha a linha e '" para lidar com espaços no bash ou ksh).

    
por 29.05.2016 / 00:24