linux - Find 在我使用 {} 时创建一个文件
问题描述
我尝试使用 find 创建一种非常简单的方法来向文件添加换行符。我知道还有很多其他的方法可以做到这一点,但是我无法以这种方式工作,这让我大吃一惊。所以 - 我不是在问如何在文件中添加换行符 - 我在问为什么 find 很奇怪。
find . -type f -iname 'file' -exec echo >> {} \;
生成一个名为“{}”的新文件,其中包含换行符(以检查 find 在我的计算机上是否有效):
find . -type f -iname 'file' -exec echo {} \;
打印“./file”。
所以 >> 使 find 感到困惑。问题是为什么以及如何解决这个问题?
解决方案
我在问为什么 find 很奇怪。
它不是。这与find
. 事实上,当文件被创建时,find
甚至还没有开始运行。
>>
大致意思是“将标准输出重定向到这个文件的末尾,必要时创建一个新文件”。请注意,这与>>
.
重定向是 shell 的一个特性,find
对重定向一无所知,shell 对find
. >>
不会因为你碰巧打电话就神奇地改变了它的意思find
。它仍然意味着完全相同的东西。
如果你想使用 shell 功能-exec
,你需要使用 shell -exec
:
find . -type f -iname 'file' -exec sh -c 'echo >> "{}"' \;
推荐阅读
- flutter - Flutter - 如何在屏幕上显示 For-loop 结果
- python - 如何使用 Python 中的正则表达式方法将文本文件拆分为具有自定义名称(不是计数器)的多个文本文件
- excel - 如何在Excel中总结单圈时间
- swift - 如何在部分中有大量标题的同时制作粘性 headerTableView?
- xcode - 在 Xcode 中构建 EFQRCode 失败
- python - python模块初始化错误:只能将列表(不是“str”)连接到列表
- javascript - 通过 javascript 向 Whatsapp API 发送消息,打开 whatsapp 但显示空白文本
- c# - IDevTools 实例不包含 CreateDevToolsSession 方法
- javascript - 在本机反应中选择日期时如何关闭日期选择器模式
- python - 如何在 Python / Windows 中绕过管道缓冲区大小