
Según tengo entendido, quiero usar comm -23 file1 file2
. file1 es el resultado de find
y file2 es cut -c43- list
. ¿Es posible que pueda escribir esto como 1 línea y no usar ningún archivo (excepto el que he llamado lista)?
Respuesta1
La sustitución de procesos es tu amiga aquí:
$ comm -23 <(find /dir -name 'something') <(cut -c43- list)
El formato <(command)
aplica un descriptor de archivo temporal command
y el conjunto <( )
se utiliza como entrada de archivo comm
(o cualquier otro comando).
Vermás sobre la sustitución de procesos aquí. Compruebe también man bash
:
Sustitución de procesos
La sustitución de procesos permite hacer referencia a la entrada o salida de un proceso mediante un nombre de archivo. Toma la forma de <(lista) o >(lista). La lista de procesos se ejecuta de forma asincrónica y su entrada o salida aparece como un nombre de archivo. Este nombre de archivo se pasa como argumento al comando actual como resultado de la expansión. Si se utiliza el formulario >(lista), escribir en el archivo proporcionará información para la lista. Si se utiliza el formato <(lista), el archivo pasado como argumento debe leerse para obtener el resultado de la lista. La sustitución de procesos se admite en sistemas que admiten canalizaciones con nombre (FIFO) o el método /dev/fd para nombrar archivos abiertos.