簡體   English   中英

Bash腳本查找模式並替換為文件名

[英]Bash script find pattern and replace by filename

我正在嘗試查找特定文件夾的所有文件,其中包含文本“ TO_BE_REPLACED”,我想用不帶字符Impl的文件名替換此字符串。 我的意思是,有一個名為MyServiceImpl的文本“ TO_BE_REPLACED”的文件,我想將其替換為文本“ MyService”。 我該如何實現? 我嘗試過這種方法,但沒有結果:

find src/main/java/com/shn/*/server/service/impl/ -type f -print0 | xargs -0 sed -i "" "s/TO_BE_REPLACED/<filename>/g"

您可以這樣做:

while read -r filename
do
  sed -i "s/TO_BE_REPLACED/MyService/g" $filename
done < <(find "src/main/java/com/shn/*/server/service/impl/" -type f)

如果您具有GNU Parallel> = 20140822:

find . -type f | parallel -q sed -i "" -e 's/TO_BE_REPLACED/{=s:.*/::;s/Impl$//=}/g' {}

這里的技巧是使用perl表達式從.../MyServiceImplMyService並在sed使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM