使用find -exec重定向stdout

时间:2015-05-09 01:48:16

标签: linux shell find

我想将文件夹及其子文件夹下的所有文件合并到文件total.txt中,所以我试试

find . -type f -exec cat {} +; > total.txt

并且输出无法重定向

管道无法正常工作:

find . -type f -exec cat {} + | cat > total.txt

它可能是由-exec引起的,它将所有参数作为命令后出现?

是不是?以及如何解决它?或者有更好的方法来实现这一目标。

任何帮助将不胜感激:)

2 个答案:

答案 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