首页 > 解决方案 > Find 在我使用 {} 时创建一个文件

问题描述

我尝试使用 find 创建一种非常简单的方法来向文件添加换行符。我知道还有很多其他的方法可以做到这一点,但是我无法以这种方式工作,这让我大吃一惊。所以 - 我不是在问如何在文件中添加换行符 - 我在问为什么 find 很奇怪。

find . -type f -iname 'file' -exec echo >> {} \;

生成一个名为“{}”的新文件,其中包含换行符(以检查 find 在我的计算机上是否有效):

find . -type f -iname 'file' -exec echo {} \;

打印“./file”。

所以 >> 使 find 感到困惑。问题是为什么以及如何解决这个问题?

标签: linuxshellfind

解决方案


我在问为什么 find 很奇怪。

它不是。这与find. 事实上,当文件被创建时,find甚至还没有开始运行。

>>大致意思是“将标准输出重定向到这个文件的末尾,必要时创建一个新文件”。请注意,这与>>.

重定向是 shell 的一个特性,find对重定向一无所知,shell 对find. >>不会因为你碰巧打电话就神奇地改变了它的意思find。它仍然意味着完全相同的东西。

如果你想使用 shell 功能-exec,你需要使用 shell -exec

find . -type f -iname 'file' -exec sh -c 'echo >> "{}"' \;

推荐阅读