据我了解,我可以使用
find . -name '*.txt' -exec cat {} \; > all.txt
将目录中的所有文本文件(递归地遍历子目录)连接到名为all.txt
.问题是,我没有足够的存储空间来all.txt
存储原始文件。有没有一种方法可以一个接一个地执行两个命令,以便我可以在将原始文件与 串联后删除它all.txt
?
答案1
我认为最通用的方法是构建一个简单的单行 shell 命令发送到find
:
find . -name "*.txt" -exec sh -c 'cat {} >> foobar && rm {}'
附注:您的 glob*.txt
与您的输出文件all.txt
.如果您附加的文件(在我的例子中)与您的全局foobar
不匹配,您将避免出现边缘情况。稍后-name
重命名即可foobar
。