繁体   English   中英

在bash文件中运行多个查找和sed

[英]Running multiple find and sed in a bash file

我有下面的代码

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文件中一起运行它们,则会出现错误:

查找:缺少'-exec'的参数

command执行成功但script失败的原因是:

当脚本被执行的find为在当前执行路径中的所有文件和目录的命令搜索(如.在使用find )。 同样,这还包括script本身。 这将创建要被sed覆盖/修改的脚本。

因此,当需要进行文件编辑时,不必将脚本保存在同一目录中,而是可以将脚本保存在其他目录中,并可以将absolute path提供给find命令。

并且还建议使用\\;终止命令\\; 表示参数的结尾。

始终使用bash而不是sh来执行脚本,这意味着bourne shell 通常bashsh的符号链接,但它将以兼容模式运行,这会导致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' '{}' \; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM