gpt4 book ai didi

linux - 当我使用 {} 时,Find 会创建一个文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:23 25 4
gpt4 key购买 nike

我尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com