Direcionando saída não vazia para um arquivo

0

Eu quero salvar apenas a saída não vazia do comando find em um arquivo. Se não houver arquivo de saída, não deve ser criado.

$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file

Como fazer isso?

    
por Josef Klimuk 21.02.2018 / 11:54

2 respostas

4

O utilitário ifne do pacote moreutils deve realizar o que você quer:

$ find . -name 'bb' | ifne tee file

Da página do manual:

% bl0ck_qu0te%     
por user4556274 21.02.2018 / 14:21
3

Use a opção -exec , que só será executada se os arquivos forem encontrados:

find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +

Explicação:

  • printf "%s\n" "$@" Imprime cada argumento com uma nova linha à direita.
  • sh O segundo argumento para sh -c é atribuído a $0 .
  • {} + Como -exec arguments, estes significam "todos os arquivos selecionados". sh -c atribui isso a $1 , $2 , etc.
por wjandrea 23.02.2018 / 06:07