簡體   English   中英

Bash腳本根據文件名查找文件並對其進行搜索替換

[英]Bash script to find files based on filename and do search replace on them

我在網絡文件系統中散布了一堆文件(同名,例如abc.txt)。

我需要遞歸搜索每個文件,一旦找到每個文件,就進行內容搜索並替換它們。

經過研究后,我發現可以使用find命令(使用-r遞歸對嗎?)來查找文件。 就像是:

    find . -r -type f  abc.txt

並使用sed查找並替換每個:

    sed -ie 's/search/replace/g' abc.txt

但是我不確定如何將兩者粘合在一起,以便找到所有出現的abc.txt,然后在每個位置進行搜索/替換。

我的目錄樹確實很大,所以我知道對所有目錄進行遞歸搜索將花費很長時間,但這比手動嘗試查找每個文件要好。

我正在使用Bash的OSX 10.6。

謝謝大家!

更新:我認為下面發布的答案可能適用於其他操作系統(也許是Linux),但對於OSX,我必須對其進行一些調整。

    find . -name abc.text -exec sed -i '' 's/search/replace/g' {} +

sed中的-i后面必須使用空引號,以表明我們不想生成備份文件。 手冊頁顯示為:

-i擴展名:

就地編輯文件,以指定擴展名保存備份。 如果給出零長度的擴展名,則不會保存任何備份。

find . -r -type f abc.txt -exec sed -i -e 's/search/replace/g' {} +

暫無
暫無

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

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