
Pelo que entendi, quero usar o comm -23 file1 file2
. file1 é o resultado de find
e file2 é cut -c43- list
. É possível escrever isso como uma linha e não usar nenhum arquivo (exceto aquele que nomeei de lista)?
Responder1
A substituição de processo é sua amiga aqui:
$ comm -23 <(find /dir -name 'something') <(cut -c43- list)
O formato <(command)
aplica um descritor de arquivo temporário ao command
e o todo <( )
é usado como entrada de arquivo para comm
(ou qualquer outro comando).
Vermais sobre substituição de processo aqui. Verifique também man bash
:
Substituição de Processo
A substituição de processo permite que a entrada ou saída de um processo seja referenciada usando um nome de arquivo. Assume a forma de <(lista) ou >(lista). A lista de processos é executada de forma assíncrona e sua entrada ou saída aparece como um nome de arquivo. Este nome de arquivo é passado como argumento para o comando atual como resultado da expansão. Se o formulário >(list) for usado, escrever no arquivo fornecerá entrada para a lista. Se a forma <(list) for usada, o arquivo passado como argumento deverá ser lido para obter a saída da lista. A substituição de processo é suportada em sistemas que suportam pipes nomeados (FIFOs) ou o método /dev/fd de nomear arquivos abertos.