我有下面的代码
find . -type f -exec sed -i 's#<![endif]>##g' {} +
find . -type f -exec sed -i 's#<script src="/js/vendor/modernizr-2.6.2.min.js?v=201425100529"></script>##g' {} +
find . -type f -exec sed -i 's# <!--[if lt IE 9]>##g' {} +
在 bash 文件中。
如果我直接在终端中运行这些行,它会工作,但如果我在一个 sh 文件中一起运行它们,我会出现错误:
find: missing argument to '-exec'
最佳答案
命令
执行成功但脚本
执行失败的原因是,
当脚本被执行时,find
命令搜索当前执行路径中的所有文件和目录(如 .
用于 find
).同样,这也包括 script
本身。这将创建要被 sed
覆盖/修改的脚本。
因此,当需要完成文件编辑时,不是将脚本保存在同一目录中,而是可以将脚本保存在其他目录中,并且可以为 提供一个
命令。绝对路径
>查找
并且还建议使用\;
终止命令以指示参数结束。
总是使用 bash
来执行脚本而不是 sh
,这意味着 bourne shell
。通常 bash
将是 sh
的符号链接(symbolic link),但它会以兼容模式运行,这会导致 bash
失去现代功能。
#!/bin/bash
find /Absolute/path -type f -exec sed -i 's#<!\[endif\]>##g' '{}' \;
find /Absolute/path -type f -exec sed -i 's#<script src="/js/vendor/modernizr-2.6.2.min.js?v=201425100529"></script>##g' '{}' \;
find /Absolute/path -type f -exec sed -i 's# <!--\[if lt IE 9\]>##g' '{}' \;
关于linux - 在 bash 文件中运行多个查找和 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102862/