shell指令碼專題-----cat,find,grep,awk,sed(五)

hongge_smile發表於2020-10-26

cat

1.將來自檔案的內容和標準輸入拼接在一起,講一個stdin和另一個檔案組合起來,方法如下:

echo "新增到檔案末尾" | cat - file.txt

說明: 上面的程式碼中, - 被作為stdin文字的檔名.

  1. cat去除多餘的空白行

1.txt內容如下:

printf.sh



printf.sh

printf.sh



printf.sh


printf.sh

如果想去除多餘的空白行,可以使用下面的命令:

cat -s 1.txt >save.txt

執行上面的內容以後,可以將多餘的空白行去除,並且儲存到save.txt中.

save.txt內容如下:

printf.sh

printf.sh

printf.sh

printf.sh

printf.sh

find

find命令功能非常強大,通常用來在特定的目錄下搜尋符合條件的檔案,也可以用來搜尋特定使用者屬主的檔案。
find常用的操作如下:
在這裡插入圖片描述
在這裡插入圖片描述
舉例1. (查詢當前目錄下所有的mp4格式結尾的檔案)

find ./ -name "*.mp4"

忽略大小寫:

find ./ -iname "*.mp4"

-i指 ignore,忽略的意思.

舉例2 (查詢當前目錄下所有的視訊格式檔案)

find sshuttle/ \( -name "*.mp4" -o -name "*.mkv" -o -name "*.ts" -o -name "*.mp3"    \)

說明: -o 引數代表 OR的意思.
需要用括號將匹配的內容連線起來.

舉例3(否定引數!)

find可以使用"!"否定引數,例如:

find . ! -name "*.txt"

說明:上述的程式碼意思是:查詢當前目錄下不以txt結尾的所有檔案.

舉例4(基於目錄深度的查詢)
預設情況下,find會遍歷所有的子目錄,有的時候,我們並不需要遍歷所有的目錄,例如我們只想遍歷到二級目錄:

find . -maxdepth 2 -name "*.txt" 

說明: -maxdepth 最大的深度
-minidepth 最小的深度

舉例5(刪除匹配的檔案)
-delete可以用來刪除find查詢到的匹配檔案.

find . -type f -name "*.txt" -delete

說明:刪除所有的txt結尾的檔案.

舉例6(find和exec結合使用)
find和exec結合使用作用很強大:

find . type -f -user root -exec chown ubuntu {} \;

說明:上述程式碼的意思是,找出當前目錄下所有的root使用者所管理的檔案,並將檔案的所有權切換成ubuntu使用者;
{}是一個與-exec選項搭檔使用的特殊字串,對於每一個匹配的檔案,{]會被替換成相應的檔名.

相關文章