sed命令和find命令的結合的使用

水上飄零發表於2019-07-01

linux中查詢當前目錄及其子目錄下的所有test.txt檔案,並將檔案中的oldboy替換成oldgirl

首先查詢出當前目錄及其子目錄下的所有的test.txt檔案

[root@zxl zxl]# find ./ -type f -name "test.txt"
./test.txt
./a/test.txt
./a/ddd/fff/test.txt
./c/test.txt
[root@zxl zxl]#

檢視檔案中的內容

[root@zxl zxl]# find ./ -type f -name "test.txt"|xargs cat
oldboy
oldboy
oldboy oldboy
oldboy
oldboy
oldboy
[root@zxl zxl]#

將查詢結果進行替換並檢視替換後的結果

[root@zxl zxl]# find ./ -type f -name "test.txt"|xargs sed -i 's#oldboy#oldgirl#g'
[root@zxl zxl]# find ./ -type f -name "test.txt"|xargs cat
oldgirl
oldgirl
oldgirl oldgirl
oldgirl
oldgirl
oldgirl
[root@zxl zxl]#

上述替換過程等價於

[root@zxl zxl]# find ./ -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \;

同時等價於

[root@zxl zxl]# sed -i 's#oldboy#oldgirl#g' `find /home/zxl/ -type f -name "test.txt"`

注意:

 

相關文章