find和echo命令异常

agpintel 2019-08-23 05:32:13
目录下有几个a*的空文件. 我想把这些文件找出来, 然后把 "test" echo到这几个a*文件.
发现下面命令是不行的.
结果是把好几个 test 追加到 {}文件,{}替代不起作用. 
到底是什么回事呢?

find . -name "a*" -exec echo "test" > {} \;
...全文
324 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
agpintel 2019-08-28
  • 打赏
  • 举报
回复
谢谢! 楼上正解, 应该是这样的, >”后边的内容当作文件名来操作
mouse_zhu 2019-08-28
  • 打赏
  • 举报
回复
> 符号会截断 find的内容,也就是你加入“>”后find 的内容已经丢失。shell会把“>”后边的内容当作文件名来操作
mouse_zhu 2019-08-28
  • 打赏
  • 举报
回复
find . -name "a*" | while read i;do echo "test11" >$i;done;
agpintel 2019-08-23
  • 打赏
  • 举报
回复
感谢楼上, 试过都不行, 改用sed 就可以 find . -name "a*" -exec sed -i '1atest' {} \; 然而, 又引出另一个问题, 那些aa*是我用touch生成的空文件, sed对空文件是不起作用的. 晕 纯理论研究, 没有什么实际应用场景
铖邑 2019-08-23
  • 打赏
  • 举报
回复
再者,我记得追加应该是双大于号吧?>>
铖邑 2019-08-23
  • 打赏
  • 举报
回复
两个花括号之间是不是应该有个空格呢?

19,610

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧