詳解linux,macos下批處理精要 grep,sed,find,正則,管道等結合使用例子

創建一個文本

echo "b2">text2.txt

講解

1,echo 打印

2,“b2”字符串

3,>text2.txt 定向到text2.txt這個文件裏面,如果這個文件不存在則生成。


替換包含有某個字段的所有文件中得所有字段

先安裝一下brew爲了使用正規的linux命令:安裝方法:http://brew.sh/index_zh-cn.html

在終端鍵入:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

安裝完成後:

例如:我要把/test下所有包含abc的文件中的abc替換爲def,執行命令: 

gsed -i "s/abc/def/g" `grep abc -rl /test`


全局替換文件中的字符串 

find . -name "*.txt" -exec sed -i 's/[0-9]/replace/g' {} \;

1,find 遞歸查找命令

2,. 爲當前目錄下

3,-name 以名字匹配方式查找

4,"*.txt"匹配方式所有以.txt結尾的文件“*”表示匹配任意多次的任意非特殊符號的字符

5,-exec 把匹配結果轉給下一組命令作爲參數

6,sed -i 可以在多個文件中替換文件裏面的指定內容編輯方式

7,'s/[0-9]/replace/g' 爲匹配的內容,裏面的參數依次是‘s替換/[0-9](匹配0-9中任意一個數字)要匹配的字符串/要替換的字符串/g全局替換(默認只替換第一個碰到的被匹配的字符串)’

特例:mac os下sed多一個參數。原因是必須要備份一下原文件,創建存盤到"recordTxt"

find . -name "txt[0-9].txt" -exec sed -i "recordTxt"  's/[0-9]/replace/g' {} \;


批量刪除查找到的文件

find . -name "txt[0-9].*" -exec rm -f {} \;


grep 通配符查找文件和內容
grep 'text[0-9]' *.txt

1,*.txt 以.txt結尾的所有文件

2,匹配以.txt結尾的所有文件 中的text[0-9]的相關的所有內容,然後打印到屏幕上。


find查找的內容顯示在grep上
find .  -name "text[0-9].txt" -exec grep "[0-9]" {} \;
用find 找到的所有文件, 用grep匹配出所有文件中想要獲取的字符串,並且打印到屏幕上

grep正則表達式查找“當前目錄”下的所有“子文件”。並且用-e來做正則篩選,結果打印出來
ls | grep -e '.\{4\}[0-9].txt' 
或者定製路徑下所有自文件的內容匹配
cd /usr/local/projects/ && ls | grep -e '.\{4\}[0-9].txt'


刪除當前文件夾下(無遞歸)匹配到的文件

ls | grep -e'.\{4,10\}.txt' | xargs -I [] -n 1 sudo rm []

1,ls 得到當前目錄下的所有自文件名字

2,| 結果通過管道把ls獲取到的內容 傳給grep作爲參數

3,grep -e 用正則表達式匹配傳來內容(字符串)

4  |xargs -I []  把grep匹配到的結果作爲參數,儲存在[]這個變量裏 

5,-n參數的個數,這邊爲n個

6,sudo rm[]給予權限,然後rm刪除所有匹配到的文件。


移動當前文件夾下(無遞歸)匹配好的文件到shell文件夾下

ls | grep -e'.\{4,10\}.txt' | xargs -I [] -n 1 sudo cp [] shell/



遞歸拷貝一個文件下的所有子文件,到另外一個文件夾


cp -r dir1/. dir2



遞歸

刪除當前文件夾下保函某個字段的所有文件
find . -name .git\* | xargs rm -fr

注意  *之前要添加一下轉意符纔可以


發佈了63 篇原創文章 · 獲贊 4 · 訪問量 64萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章