1

В системе Linux у меня есть набор очень больших файлов, содержащих длинный список записей, по одной на строку, которые читаются по одному для создания определенных файлов индексации для каждого из них, которые затем используются для другого процесса позже , Например:

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

Я хотел бы объединить имеющиеся у меня файлы, создав нечто, эквивалентное символической ссылке сцепленных файлов, чтобы я мог повторно использовать файлы и сэкономить некоторое пространство, а также создавать индексные файлы только из комбинированного ввода. Например:

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

Есть ли способ создания этой символической конкатенации файлов? Может быть, использовать именованные каналы или что-то подобное?

2 ответа2

3

Попробуйте это (не проверено)

mkfifo file1.2.3.txt
cat file1.txt file2.txt file3.txt > file1.2.3.txt
indexprogram file1.2.3.txt
cat file1.txt file2.txt file3.txt > file1.2.3.txt
analysisprogram file1.2.3.txt

Вероятно, будет удобнее обновить до indexprogram и analysisprogram для чтения из stdin, если в командной строке не указано имя файла.

cat file1.txt file2.txt file3.txt | indexprogram 
cat file1.txt file2.txt file3.txt | analysisprogram
2

Нет, я не думаю, что это возможно.

Файл - это набор байтов на диске, идентифицируемых уникальным идентификатором и некоторыми метаданными, включая имя файла и т.д. Символьная ссылка указывает на уникальный идентификатор еще одного файла. Я не знаю реализацию, где одна ссылка указывает на несколько целей.

Для этого вы можете захотеть использовать базу данных, например, sqlite или что-то подобное.

Также см. Эту связанную тему https://stackoverflow.com/questions/423320/can-i-symlink-multiple-directories-into-one

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .