我试图运行命令
find . -name "*.csv" | xargs -I{} cat '{}' > Everything2.csv
我回来了:
cat:./ Everything2.csv:输入文件是输出文件
这是什么意思?
答案 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