我尝试使用 find 创建一种非常简单的方法来向文件添加换行符。我知道还有很多其他方法可以做到这一点,但我无法让这种方法发挥作用,这让我很烦恼。 所以 - 我不是在问如何向文件添加换行符 - 我是在问为什么 find 很奇怪。
find . -type f -iname 'file' -exec echo >> {} \;
结果会创建一个名为“{}”的新文件,其中包含换行符(以检查 find 在我的计算机上是否有效):
find . -type f -iname 'file' -exec echo {} \;
打印“./file”。
所以 >> 使 find 变得困惑。问题是为什么以及如何解决这个问题?
最佳答案
I'm asking why find is weird.
事实并非如此。这与find
无关。事实上,当文件创建时,find
甚至还没有开始运行。
>>
大致意思是“将 stdout 重定向到该文件的末尾,必要时创建一个新文件”。请注意,这与 >>
的左侧没有任何关系。
重定向是 shell 的一项功能,find
对重定向一无所知,并且 shell 对 find
一无所知。 >>
不会仅仅因为您碰巧调用了 find
就神奇地改变了它的含义。它仍然意味着完全相同的事情。
如果您想在 -exec
中使用 shell 功能,则需要在 -exec
中使用 shell:
find . -type f -iname 'file' -exec sh -c 'echo >> "{}"' \;
关于linux - 当我使用 {} 时,Find 会创建一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128614/