¿Cómo puedo usar comm de esta manera?

¿Cómo puedo usar comm de esta manera?

Según tengo entendido, quiero usar comm -23 file1 file2. file1 es el resultado de findy 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 commandy 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.

información relacionada