簡體   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