我有两个大文件(每个 150G),我需要使用一个工具将它们作为单个文件提供(因为该工具只接受一个文件)。但是,出于多种原因,我不想合并这些文件,但我无法使用类似<(cat file1 file2)
或之类的东西来管道传输它们,myfile=$(cat file1 file2)
因为脚本使用的是输入文件的路径,而不是其内容。
因此我需要类似下面的内容:
alias myfile = "cat file1 file2"
因此使用以下命令即可起作用:
tool_x --file /path/myfile
我已经尝试过这个提到的命令,但它不起作用。
我只需要能够将“cat”命令的结果视为实际文件,并可以使用路径访问该文件。
有可能实现这样的目标吗?
答案1
您可以使用命名管道:
mkfifo /path/myfile
cat file1 file2 > /path/myfile &
这里,要么cat
将命令发送到后台,要么你可以tool_x
在另一个终端中运行,因为它cat
会阻塞直到某些内容开始从管道读取:
tool_x --file /path/myfile
这实际上就是流程替代自动为您执行的操作。
答案2
您可以使用临时文件mktemp
像这样:
myfile="$(mktemp)"
cat file1 file2 > "$myfile"
tool_x --file "$myfile"
哪里$myfile
会扩展为实际路径,例如/tmp/tmp.Tg9Epuetsr