En un sistema Linux, tengo un conjunto de archivos muy grandes, que contienen una larga lista de entradas, una por línea, que se leen una por una para crear ciertos archivos de indexación para cada una de ellas, que luego se usan para otro proceso. . Por ejemplo:
indexprogram file1.txt
# creates file1.txt.idxA file1.txt.idxB file.txt.idxC file.txt.idxD
analysisprogram file1.txt
# reads file1.txt as well as the index files and produces some output
Me gustaría combinar los archivos que tengo creando algo equivalente a un enlace simbólico de archivos concatenados, para poder reutilizar los archivos y ahorrar algo de espacio, y solo generar los archivos de índice de la entrada combinada. Por ejemplo:
create symlink of "cat file1.txt file2.txt file3.txt > file1.2.3.txt"
indexprogram file1.2.3.txt
# creates file1.2.3.txt.idxA file1.2.3.txt.idxB file1.2.3.txt.idxC file1.2.3.txt.idxD
analysisprogram file1.2.3.txt
# reads file1.2.3.txt as if it were a real file, reads index files, produces output
¿Hay alguna forma de crear esta concatenación simbólica de archivos? Tal vez usando tuberías con nombre o algún truco similar?
Respuestas:
No, no creo que esto sea posible.
Un archivo es una colección de bytes en un disco, identificado por una ID única y algunos metadatos, incluido el nombre de archivo, etc. Un enlace simbólico apunta a la ID única de otro archivo. No sé de una implementación donde un enlace apunta a múltiples objetivos.
Para hacer esto, es posible que desee utilizar una base de datos, por ejemplo, sqlite o algo similar.
También vea este tema relacionado https://stackoverflow.com/questions/423320/can-i-symlink-multiple-directories-into-one
fuente
Prueba esto (no probado)
Es probable que sea más limpio actualizar el programa de índice y el programa de análisis para leer desde la entrada estándar si no se dan nombres de archivos en la línea de comandos.
fuente