Dirigir la salida no vacía a un archivo

Dirigir la salida no vacía a un archivo

Quiero guardar solo la salida no vacía del comando de búsqueda en un archivo. Si no hay ningún archivo de salida, no se debe crear.

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

¿Cómo hacerlo?

Respuesta1

La utilidadifnedel paquetemoreutilsdebe lograr lo que desea:

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

Desde la página de manual:

Descripción

ifneejecuta el siguiente comando si y solo si la entrada estándar no está vacía.

Respuesta2

Utilice la -execopción, que sólo se ejecutará si se encuentran archivos:

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

Explicación:

  • printf "%s\n" "$@"Imprima cada argumento con una nueva línea al final.
  • shEl segundo argumento de sh -cse asigna a $0.
  • {} +Como -execargumentos, estos representan "todos los archivos seleccionados". sh -clos asigna a $1, $2, etc.

información relacionada