![](/img/trans.png)
[英]How to find multiple files, check for duplicates and replace with bash,sed script
[英]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
。 通常bash
是sh
的符號鏈接,但它將以兼容模式運行,這會導致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.