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 >> {}" ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |