Linux shell指令碼學習攻略筆記3

2021-07-31 16:22:26 字數 1343 閱讀 5884

今天繼續上一次find命令的內容,主要是find和 -exec 和xargs的結合和使用。

(9) find 命令可以借助選項-exec與其他命令進行結合。- exec算得上是find最強大的特性之一。

比如我們要將某位使用者全部檔案的所有權更換為另乙個使用者(比如root),那麼就可以用 -user找出root擁有的所有檔案,然後用-exec更改所有權。(注意你必須以root使用者的身份執行find命令才能進行所有權的更改)

例1:

# find . -type f -user root -exec chown slynux {} \;
在這個命令中,是乙個與-exec選項搭配使用的特殊字串。對於每乙個匹配的檔案,會被替換成相應的檔名。例如,find命令找到兩個檔案test1.txt和text.txt,其所有者均為slynux,那麼find就會執行:

chown slynux {}  它會被解析為 chown slynux test1.txt 和 chown slynux test2.txt。

例2:將給定目錄中的所有c程式檔案拼接起來寫入單個檔案all_c_files.txt。我們可以用find找到所有c檔案,然後結合-exec 使用cat命令:

$ find . -type f -name "*.c" -exec cat {} \    > all_c_file.txt
-exec 之後可以接任何命令。 表示乙個匹配。對於任何匹配的檔名, 均會被改檔名所替換。

例3:

用下列命令將10天前的.txt檔案複製到old目錄中:

$ find  -type f - name "*.txt" -mtime -10 -exec cp {}  old \;
-exec 能夠同printf結合來生成有用的輸出資訊。例如

(10): 讓find跳過特定的目錄

在搜尋目錄並執行某些操作時,有時為了提高效能,需要跳出一些子目錄。將某些檔案或目錄從搜尋過程中排除在外的技巧被稱之為修建。其操作方法如下:

$ find . \( -name "*.git" prune\) -o \(-type f -print\)

# 代替直接使用 \( -type f -print\), 而是選擇需要的過濾器

以上命令列印出不包括在.git目錄中的所有檔案的名稱(路徑)。

Linux Shell指令碼學習(一)

最近花了一周的時間快速的學習了一下shell指令碼,看的書是 linux shell指令碼程式設計 第三版 僅僅整理了一些筆記,不做技術交流也不算分享,只是作為自己的學習之路的記錄,務戀。shell one 開始學習linux shell指令碼,首日了解了linux命令列 linux shell終端...

linux shell指令碼學習筆記

if command then commands fiif後面的命令,執行後狀態碼返回0,則執行then部分的命令 執行pwd wang wang test pwd home wang test 檢視退出碼 wang wang test echo 0 執行pwda wang wang test pw...

Linux shell指令碼全面學習 一

1.linux 指令碼編寫基礎 1.1 語法基本介紹 1.1.1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。要使指令碼可...