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
Respuesta2
Utilice la -exec
opció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.sh
El segundo argumento desh -c
se asigna a$0
.{} +
Como-exec
argumentos, estos representan "todos los archivos seleccionados".sh -c
los asigna a$1
,$2
, etc.