我尝试使用find创建一个非常简单的方法来将换行符添加到文件中。我知道还有很多其他方法可以做到这一点,但是这使我烦恼,我无法获得这种工作方式。 所以-我不是在问如何在文件中添加换行符-我是在问为什么find很奇怪。
os.system("pythontry.py 1")
生成一个名为“ {}”的新文件,并在while内使用换行符(以检查查找结果在我的计算机上是否有效):
find . -type f -iname 'file' -exec echo >> {} \;
打印“ ./文件”。
因此>>使感到困惑。问题是为什么以及如何解决?
答案 0 :(得分:3)
我在问为什么发现很奇怪。
不是。这与find
无关。实际上,创建文件后,find
甚至还没有开始运行。
>>
大致意味着“将标准输出重定向到该文件的末尾,必要时创建一个新文件”。请注意,这与>>
的 left 无关。
重定向是Shell的功能,find
对重定向一无所知,而Shell对find
则一无所知。 >>
不会因为您碰巧打电话给find
而神奇地改变了它的含义。它仍然意味着完全相同的东西。
如果要在-exec
中使用shell功能,则需要在-exec
中使用shell:
find . -type f -iname 'file' -exec sh -c 'echo >> "{}"' \;
答案 1 :(得分:1)
尽管问题本身已经得到解答,但我想指出的是,您不必严格要求find
做所有事情,而是可以使用其他可用的工具来与之配合工作,例如例如:
find . -type f -iname 'file' | while read file; do echo >>"$file"; done
此方法还具有不为每个匹配都执行新过程的优点,这种情况下无关紧要,但是如果有数千个匹配并且exec
相对较重,则可能很重要。