我正在尝试将一个固定字符串附加到文件夹(及其子文件夹)中的每个文件,同时跳过.git目录.
我希望这样的东西能起作用
find . -type f ! -path "./.git/*" -exec "echo \"hello world\" >> {}" \;
Run Code Online (Sandbox Code Playgroud)
如果我使用额外的echo运行它,它会生成看起来正确的命令
bash> find . -type f ! -path "./.git/*" -exec echo "echo \"hello world\" >> {}" \;
echo "hello world" >> ./foo.txt
echo "hello world" >> ./bar.txt
...
Run Code Online (Sandbox Code Playgroud)
当我直接从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
...
Run Code Online (Sandbox Code Playgroud)
但是那些文件确实存在,因为当我列出目录时,我得到了这个:
bash> ls
bar.txt baz.txt foo.txt subfolder/
Run Code Online (Sandbox Code Playgroud)
我想我没有引用我需要的东西,但我已经尝试了所有我能想到的东西(双引号和单引号,转义而不是逃避内部引号等等).
有人可以解释我的命令有什么问题,以及如何实现向文件添加固定字符串?
dev*_*ull 13
您需要指示shell执行此操作:
find . -type f ! -path "./.git/*" -exec sh -c "echo hello world >> {}" \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7025 次 |
| 最近记录: |