如何使用 sed 命令替換目錄及其子目錄中檔案中的文字?


讓我們考慮一個案例,假設我們有兩個目錄,例如 d1d2,這兩個目錄都包含一些檔案,這些檔案可能是相同或不同的。現在,我們希望使用 sed 命令替換可能存在於 d1 目錄或 d2 目錄中某些檔案中的特定文字。

為了做到這一點,我們必須熟悉 sed 命令,因為 sed 命令可以用來解決上述問題。

讓我們首先探索 sed 命令,它是 流編輯器的縮寫。此命令用於對特定檔案執行不同的功能,例如查詢、替換、插入等等。

讓我們探索一個案例,假設我們有兩個目錄 d1d2,這兩個目錄都包含一些檔案。

請考慮以下終端輸出,以顯示這兩個目錄:

immukul@192 linux-questions-code % ls -ltr
total 0
drwxr-xr-x 5 immukul staff 160 Jul 5 20:03 d1
drwxr-xr-x 4 immukul staff 128 Jul 5 20:03 d2

現在,第一個目錄 d1 的內容如下所示:

immukul@192 d1 % ls -ltr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 5 20:03 1.txt
-rw-r--r-- 1 immukul staff 0 Jul 5 20:03 3.txt
-rw-r--r-- 1 immukul staff 0 Jul 5 20:03 5.tx

現在,第二個目錄 d2 的內容如下所示:

immukul@192 d2 % ls -ltr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 5 20:03 2.txt
-rw-r--r-- 1 immukul staff 0 Jul 5 20:03 3.txt

現在,如果我們列印 d1 目錄中存在的檔案的內容,我們將得到如下所示的內容:

immukul@192 d1 % cat 1.txt
orange

immukul@192 d1 % cat 3.txt

immukul@192 d1 % cat 5.txt
orange

我們可以看到,檔案 1.txt 和 5.txt 中包含字串“orange”。

現在,如果我們列印 d2 目錄中存在的檔案的內容,我們將得到如下所示的內容:

immukul@192 d2 % cat 2.txt
orange

immukul@192 d2 % cat 4.txt

我們可以看到,檔案 2.txt 中包含字串“orange”。

現在,我們希望使用單個命令將所有檔案中字串“orange”替換為“apple”,為此,我們在終端中輸入以下命令

find ./ -type f -exec sed -i -e 's/orange/apple/g' {} \;

輸出

immukul@192 d1 % cat 1.txt
apple

immukul@192 d1 % cat 3.txt

immukul@192 d1 % cat 5.txt
apple

immukul@192 d2 % cat 2.txt
apple

immukul@192 d2 % cat 4.txt

更新於: 2021年7月31日

739 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.