在 Linux 上将文本文件连接到虚拟文件(或程序)

在 Linux 上将文本文件连接到虚拟文件(或程序)

例如,我有四个部分(,,,1.txt),当它们连接在一起时(),这就是我想要的文件:2.txt3.txt4.txtall.txt

cat 1.txt 2.txt 3.txt 4.txt > all.txt

但是,我不想创建真正的文件(all.txt),因为它可能非常大,或者非常慢。但是有些程序或软件只接受一个文件作为其参数。(例如,sh all.txt!= sh 1.txt && sh 2.txt && sh 3.txt && sh 4.txt

如何创建这样的虚拟文件?或者如何将它们视为一个文件?

有人在这里问了类似的问题,但是我的电脑权限有限,并且 lostup 被禁止了。

在 Linux 上将文件连接到虚拟文件

答案1

工艺替代在 bash (和一些其他 shell)中。

./someprogram <(cat {1..4}.txt)

答案2

多个解决方案中的一个是使用 FIFO 管道:

$ mkfifo my_virtual_file.txt
$ cat 1.txt 2.txt 3.txt 4.txt > my_virtual_file.txt &
$ my_command my_virtual_file.txt
$ rm my_virtual_file.txt

这可能会或可能不会起作用,具体取决于my_command对文件执行的操作:与其他一些解决方案一样,如果它需要在文件中搜索(即在内容中任意向前和向后移动),那么它将失败;相反,如果它只是逐行读取文件,这将起作用。

当然,内容是只读的,命令无法写入它(或者至少不能按预期工作)。

相关内容