加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何使用find将字符串附加到目录中的每个文件

发布时间:2020-12-15 22:01:49 所属栏目:安全 来源:网络整理
导读:我正在尝试将一个固定字符串附加到文件夹(及其子文件夹)中的每个文件,同时跳过.git目录. 我希望这样的东西能起作用 find . -type f ! -path "./.git/*" -exec "echo "hello world" {}" ; 如果我使用额外的echo运行它,它会生成看起来正确的命令 bash find
我正在尝试将一个固定字符串附加到文件夹(及其子文件夹)中的每个文件,同时跳过.git目录.

我希望这样的东西能起作用

find . -type f ! -path "./.git/*" -exec "echo "hello world" >> {}" ;

如果我使用额外的echo运行它,它会生成看起来正确的命令

bash> find . -type f ! -path "./.git/*" -exec echo "echo "hello world" >> {}" ;
echo "hello world" >> ./foo.txt
echo "hello world" >> ./bar.txt
...

当我直接从shell运行它们时,那??些命令做我想要的但是当我从find运行它时我得到这个:

bash> find . -type f ! -path "./.git/*" -exec "echo "hello world" >> {}" ;
find: echo "hello world" >> ./foo.txt: No such file or directory
find: echo "hello world" >> ./bar.txt: No such file or directory
...

但是那些文件确实存在,因为当我列出目录时,我得到了这个:

bash> ls
bar.txt  baz.txt  foo.txt  subfolder/

我想我没有引用我需要的东西,但我已经尝试了所有我能想到的东西(双引号和单引号,转义而不是逃避内部引号等等).

有人可以解释我的命令有什么问题,以及如何实现向文件添加固定字符串?

解决方法

您需要指示shell执行此操作:

find . -type f ! -path "./.git/*" -exec sh -c "echo hello world >> {}" ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读