我想将文件夹及其子文件夹下的所有文件合并到文件total.txt
中,所以我试试
find . -type f -exec cat {} +; > total.txt
并且输出无法重定向
管道无法正常工作:
find . -type f -exec cat {} + | cat > total.txt
它可能是由-exec
引起的,它将所有参数作为命令后出现?
是不是?以及如何解决它?或者有更好的方法来实现这一目标。
任何帮助将不胜感激:)
答案 0 :(得分:2)
有一些问题。半冒号正在终止命令,因此您运行两个命令,第二个命令是空重定向。其次,你需要阻止find找到它正在写入的文件,一个简单的方法是将它移动到一个目录:
find . -type f -exec cat {} + > ../total.txt
答案 1 :(得分:0)
这是一个简单的方法......
## WARNING: this only works for simple cases...
cat $(find ! -path ./total.txt -type f ) >total.txt
这是另一种方式,它对各种特殊情况更加健壮,例如文件名中的空格或大量文件......
find ! -path ./total.txt -type f -print0 |xargs -0 cat >total.txt