输入文件是输出文件错误

时间:2014-06-25 19:33:30

标签: bash shell syntax-error cat

我试图运行命令

find . -name "*.csv" | xargs -I{} cat '{}' > Everything2.csv

我回来了:

  

cat:./ Everything2.csv:输入文件是输出文件

这是什么意思?

2 个答案:

答案 0 :(得分:1)

answer所示,您应该运行:

sed

因为重定向运算符($ find . -name '*.csv' -exec cat {} + | tee Everything2.csv >)具有更高的优先级,因此在调用>>命令之前创建/截断文件。因此,为了避免您需要首先生成列表,然后将其传递到文件中,但不使用重定向运算符,因此此原因中的find可以正常工作。

或者使用tee代替sponge,它会吸收标准输入并写入文件:

cat

答案 1 :(得分:1)

告诉find从结果中排除输出文件以防止此循环:

find . -name Everything2.csv -prune -o \
       -name '*.csv' -exec cat {} + \
  >Everything2.csv