需求:把目錄下的所有.sh文件中的內容替換
實現:
ls /data
a.txt b.sh c.sh d.info
方法1
-----------------------------------------------------------
先查看替換前內容
find -type f -name "*.sh" |xargs cat
before
before
測試替換結果,sed無參數時僅打印輸出
find -type f -name "*.sh" |xargs sed 's#before#after#g'
after
after
-i參數爲在文件中進行替換修改
find -type f -name "*.sh" |xargs sed -i 's#before#after#g'
查看替換後內容
find -type f -name "*.sh" |xargs cat
after
after
注:
|xargs 理解爲將管道前輸出處理成後續命令的參數(匯成單行)輸入
若直接 |cat,則cat只會把管道前的輸出當作文本處理
-----------------------------------------------------------
方法2
-----------------------------------------------------------
sed -i 's#before#after#g' `find -type f -name "*.sh"`
等價於:
sed -i 's#before#after#g' /data/b.sh /data/c.sh
注:
``符號內的內容先執行
``符號爲“Tab鍵”上面的按鍵符號,反引號(?)
-----------------------------------------------------------