Direcionando a saída não vazia para um arquivo

Direcionando a saída não vazia para um arquivo

Quero salvar apenas a saída não vazia do comando find em um arquivo. Se não houver nenhum arquivo de saída, não deverá ser criado.

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

Como fazer isso?

Responder1

A utilidadeifnedo pacotemoreutilsdeve realizar o que deseja:

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

Na página de manual:

Descrição

se nãoexecuta o seguinte comando se e somente se a entrada padrão não estiver vazia.

Responder2

Use a -execopção, 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" "$@"Imprima cada argumento com uma nova linha à direita.
  • shO segundo argumento para sh -cé atribuído a $0.
  • {} +Como -execargumentos, representam "todos os arquivos selecionados". sh -catribui-os a $1, $2, etc.

informação relacionada