unix 实用程序可合并文件而无需空间开销(cat *.txt > merged.txt;rm *.txt 一步完成)

unix 实用程序可合并文件而无需空间开销(cat *.txt > merged.txt;rm *.txt 一步完成)

是否有一个实用程序可以将文件逐行转储到标准输出并删除这些行?

我有许多大文件想要通过cat.我当然可以

cat *.txt > merged.txt 

但这将占用文件原来占用的空间的两倍txtcat像这样删除它们之后

cat *.txt > merged.txt && rm -rf *.txt

减少了存储需求,但同时仍需要 2 倍的空间

我正在寻找一个命令,可以将行流式传输到标准输出,同时删除原始文件中的行:

<some command> *.txt > merged.txt

这样*.txt+merged.txt和 使用的总空间永远不会超过*.txt最初需要的空间

答案1

逐行听起来有点棘手,但如果您接受逐个文件执行此操作(以便存储永远不会超过所有*.txt文件+其中一个:

find -name "*.txt" -exec cat {} >> result.txt \; -exec \rm -f {} \;

要特别小心!在运行 find 命令之前,请务必检查它的结果,否则您将rm删除不应以光速删除的内容。

相关内容