Linux中便捷的檔案批量處理

2021-10-10 01:44:10 字數 2722 閱讀 2398

在linux的實際使用過程中,建立多個檔案、修改多個檔案、查詢檔案中的某個部分等需求都需要有一種能夠實現檔案批量處理的方法,這篇文章主要介紹了常用的一些檔案批量操作指令,大家一起學習一下吧。

*匹配0~任意字元

[[:alpha:]]

匹配單個字母

[[:lower:]]

匹配單個小寫字母

[[:upper:]]

匹配單個大寫字母

[[:digit:]]

匹配單個數字

[[:alnum:]]

匹配單個數字或字母

[[:punct:]]

匹配單個符號

[[:space:]]

匹配單個空格

模糊匹配,物件和待處理的物件進行對比,匹配就操作,不匹配則自動跳過

{}精確匹配,精確指定集合中的每乙個元素

注意:對來說,[1-5]指的是1到5進行模糊匹配,有的話就操作,沒有就跳過。[!d-f]|[^d-f]指除了d-f以外。對{}來說,表示1-5,表示a-c,逐個匹配,如果沒有則會報錯。

[westos@miwifi-rm2100-srv desktop]$ touch westos@ westos1 westosa westosa "westo s"

[westos@miwifi-rm2100-srv desktop]$ rm -rf westos[

[:alpha:]]

[westos@miwifi-rm2100-srv desktop]$ rm -rf westos[

[:digit:]]

[westos@miwifi-rm2100-srv desktop]$ rm -rf westos[

[:lower:]]

[westos@miwifi-rm2100-srv desktop]$ rm -rf westos[

[:upper:]]

[westos@miwifi-rm2100-srv desktop]$ rm -rf westos[

[:punct:]]

[westos@miwifi-rm2100-srv desktop]$ rm -rf westo[

[:space:

]]s

上圖指令分別實現了建立 westos@,westos1,westosa,westosa,westo s這幾個檔案,之後下面的幾條指令分別實現了對各自對應檔案的刪除,其中值得注意的是,在刪除檔名包含空格的檔案時,在rm -rf 指令後面檔名時不需要用雙引號,而建立該檔案時需要用雙引號引起來,否則無法正常完成此操作。

[westos@miwifi-rm2100-srv desktop]$ touch redat  #建立red1at,red2at,red3at,red4at,red5at檔案

[westos@miwifi-rm2100-srv desktop]$ rm -rf redat #刪除red1at和red2at檔案

[westos@miwifi-rm2100-srv desktop]$ rm -rf red[1-

3]at #刪除red1at,red2at,red3at檔案

[westos@miwifi-rm2100-srv desktop]$ rm -rf red[

14]at #刪除red1at和red4at檔案

[westos@miwifi-rm2100-srv desktop]$ rm -rf red[!15

]at #刪除除了red1at和red5at的其它幾個檔案

[westos@miwifi-rm2100-srv desktop]$ rm -rf red[^15

]at #刪除除了red1at和red5at的其它幾個檔案

[westos@miwifi-rm2100-srv desktop]$ mkdir linux #建立linux目錄

[westos@miwifi-rm2100-srv desktop]$ rm -rf red[

13]at #刪除red1at和red3at檔案

[westos@miwifi-rm2100-srv desktop]$ cp red[2-

5]at linux #複製red[

2或3或4或5

]at檔案到linux目錄下。模糊匹配,如果沒有則跳過,查詢下乙個檔案

[westos@miwifi-rm2100-srv desktop]$ cp redat linux #複製red[

2和3和4和5

]at檔案到linux目錄下。如果某個檔案沒有,則會報錯。

cp: cannot stat 'red3at'

: no such file or directory

[westos@miwifi-rm2100-srv desktop]$ rm -rf redat #刪除red[

2和3和4和5

]at檔案,此時正常執行。

注意:在刪除操作時,經實驗可得,模糊匹配和精確查詢的結果沒有區別,當沒有某個檔案時,rm 操作也可正常執行,如上圖中rm -rf redat 在沒有red3at檔案時,該命令也可正常執行,不會報錯,而複製時,則會報錯,如上圖cp redat linux,會產生 cp: cannot stat 『red3at』: no such file or directory錯誤。

主要講了檔案批量處理的方法,對所要匹配資料的型別相對應的寫法要能夠清晰的分開。值得注意的是方法和{}方法匹配機制的不同,可以自己動手實驗驗證一下,加深理解。

shell 文字和檔案批量處理

將檔名中包含aa aa 的字元去掉 bin bash catch string aa aa for i in find name catch string do newname echo i sed e s aa aa echo newname mv i newname done 顯示乙個檔案中的i...

Linux環境下檔案批量複製指令碼

簡介 在做專案的時候,有一種需求,class檔案只能先以普通使用者身份用ftp複製到linux,然後用shell工具以root使用者將ftp複製來的檔案複製到對應的專案目錄,很麻煩,所以寫了一段指令碼完成這些任務。功能 只需要把要複製的檔案放到同乙個臨時目錄當中,然後修改指令碼檔案,sourcepa...

Linux 中文亂碼檔案批量重新命名

借助 find 命令,獲取檔案的索引編號,linux下每個檔案都有乙個編號,通過 ls i 可以同時列出檔名和索引編號,ls i 一下,可以看到 檢視到的檔案有亂碼,輸出的每一行有乙個index編號,就是每乙個linux下檔案都有的編號。現在用 awk 來構造新的名字,去掉其中的亂碼字元只留下數字 ...