Linux find 搜尋與取代文件中字串

可以直接使用shell 下指令快速取代掉文件中的指定字串

find命令的格式:find [-path……] -options [-print -exec -ok]

options 常用的有下選項:

-name:按照名稱查找
-perm:安裝權限所在位置
-prune:不再是目前指定的目錄下查找
-user:檔案屬主來找
-group:文件所在群組來查找
-nogroup:尋找無有效群組的文件
-nouser:尋找無有效屬主的文件
-type:依照檔案類型查找

使用以下 find 指令即可

find . -type f -name '*.php' -exec sed -i "s/replacethis/hahaha/g" {} \;

詳解:
find 搜尋 “.”(目前目錄)下的所有檔案(type = f),並且檔案名稱符合“*.php”的檔案。
將所得到的結果,都使用exec 指令請sed (自動化修改文字檔) 來執行,並直接修改檔案(-i),
“s/aaa/bbb/g”代表使用bbb取代aaa的意思。

大括號“{}”代表前面find找到的文件名

“\;”則代表中止

預設find 會往下搜尋所有檔案夾內的檔案,可以加上搜尋深度來限制只搜尋該層級

find 不遞迴的話,加上深度=1

Ex.  -maxdepth 1

MacOS 取代時,sed -i 後面要多一個空字串

find . -type f -name 'user.xml' -exec sed -i "" "s/AA<\/username>/K<\/username>/g" {} \;

才能正常使用

搜尋檔案中字串

find . -name "*.php" -exec grep -H "192.168.10.2" {} \;

這樣可以顯示出來包含“192.168.10.2”字串的檔案

發佈留言