find 模組可以幫助我們在被管理主機中查詢符合條件的檔案,就像 find 命令一樣。
常用引數:
paths引數 :必須引數,指定在哪個目錄中查詢檔案,可以指定多個路徑,路徑間用逗號隔開,此引數有別名,使用別名 path 或者別名 name 可以代替 paths。
recurse引數 : 預設情況下,只會在指定的目錄中查詢檔案,也就是說,如果目錄中還包含目錄,ansible 並不會遞迴的進入子目錄查詢對應檔案,如果想要遞迴的查詢檔案,需要使用 recurse 引數,當 recurse 引數設定為 yes 時,表示在指定目錄中遞迴的查詢檔案。
hidden引數 :預設情況下,隱藏檔案會被忽略,當 hidden 引數的值設定為 yes 時,才會查詢隱藏檔案。
file_type引數 : 預設情況下,ansible 只會根據條件查詢」檔案」,並不會查詢」目錄」或」軟鏈結」等檔案型別,如果想要指定查詢的檔案型別,可以通過 file_type 指定檔案型別,可指定的檔案型別有 any、directory、file、link 四種。
patterns引數 : 使用此引數指定需要查詢的檔名稱,支援使用 shell(比如萬用字元)或者正規表示式去匹配檔名稱,預設情況下,使用 shell 匹配對應的檔名,如果想要使用 python 的正則去匹配檔名,需要將 use_regex 引數的值設定為 yes。
use_regex引數:預設情況下,find 模組不會使用正規表示式去解析 patterns 引數中對應的內容,當 use_regex 設定為 yes 時,表示使用 python 正則解析 patterns 引數中的表示式,否則,使用 glob 萬用字元解析 patterns 引數中的表示式。
age引數 :使用此引數可以根據時間範圍查詢檔案,預設以檔案的 mtime 為準與指定的時間進行對比,比如,如果想要查詢 mtime 在3天之前的檔案,那麼可以設定 age=3d,如果想要查詢 mtime 在3天以內的檔案,可以設定 age=-3d,這裡所說的3天是按照當前時間往前推3天,可以使用的單位有秒(s)、分(m)、時(h)、天(d)、星期(w)。
age_stamp引數 :檔案的時間屬性中有三個時間種類,atime、ctime、mtime,當我們根據時間範圍查詢檔案時,可以指定以哪個時間種類為準,當根據時間查詢檔案時,預設以 mtime 為準。
size引數 :使用此引數可以根據檔案大小查詢檔案,比如,如果想要查詢大於3m的檔案,那麼可以設定 size=3m,如果想要查詢小於50k的檔案,可以設定 size=-50k,可以使用的單位有 t、g、m、k、b。
get_checksum引數 :當有符合查詢條件的檔案被找到時,會同時返回對應檔案的 sha1校驗碼,如果要查詢的檔案比較大,那麼生成校驗碼的時間會比較長。
舉例說明:
在 test 主機的/opt
目錄中查詢檔案內容中包含 abc 字串的檔案,隱藏檔案會被忽略,不會進行遞迴查詢。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt contains=".*abc.*"
'
在 test 主機的/opt
目錄及其子目錄中查詢檔案內容中包含 abc 字串的檔案,隱藏檔案會被忽略。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt contains=".*abc.*" recurse=yes
'
在 test 主機的/opt
目錄中查詢以.sh
結尾的檔案,包括隱藏檔案,但是不包括目錄或其他檔案型別,不會進行遞迴查詢。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt patterns="*.sh" hidden=yes
'
在 test 主機的/opt
目錄中查詢以.sh
結尾的檔案,包括隱藏檔案,包括所有檔案型別,比如檔案、目錄、或者軟鏈結,不會進行遞迴查詢。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt patterns="*.sh" hidden=yes file_type=any
'
在 test 主機的/opt
目錄中查詢以.sh
結尾的檔案,只不過 patterns 對應的表示式為正規表示式,查詢範圍包括隱藏檔案,包括所有檔案型別,但是不會進行遞迴查詢。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt patterns=".*.\.sh use_regex=yes file_type=ant hodden=yes"
'
在 test 主機的/opt
目錄中以及其子目錄中查詢 mtime 在2天以內的檔案,不包含隱藏檔案,不包含目錄或軟鏈結檔案等檔案型別。
[root@tlur31drk8wk ~]# ansible test -m find -a "paths=/opt age=-2d recurse=yes
"
在 test 主機的/opt
目錄中以及其子目錄中查詢 atime 在2天以內的檔案,不包含隱藏檔案,不包含目錄或軟鏈結檔案等檔案型別。
[root@tlur31drk8wk ~]# ansible test -m find -a "paths=/opt age_stamp=atime age=-2d recurse=yes
"
在 test 主機的/opt
目錄中以及其子目錄中查詢大於 2g 的檔案,不包含隱藏檔案,不包含目錄或軟鏈結檔案等檔案型別。
[root@tlur31drk8wk ~]# ansible test -m find -a "paths=/opt size=2g recurse=yes
"
在 test 主機的/opt
目錄中以及其子目錄中查詢以.sh
結尾的檔案,並且返回符合條件檔案的 sha1 校驗碼,包括隱藏檔案。
[root@tlur31drk8wk ~]# ansible test -m find -a 'paths=/opt patterns="*.sh" hidden=yes get_checksum=yes recurse=yes"
'
replace 模組可以根據我們指定的正規表示式替換檔案中的字串,檔案中所有被匹配到的字串都會被替換。
常用引數:
path引數 :必須引數,指定要操作的檔案,2.3版本之前,只能使用 dest, destfile, name指定要操作的檔案,2.4版本中,仍然可以使用這些引數名,這些引數名作為 path 引數的別名使用。
regexp引數 : 必須引數,指定乙個 python 正規表示式,檔案中與正則匹配的字串將會被替換。
replace引數 : 指定最終要替換成的字串。
backup引數 :是否在修改檔案之前對檔案進行備份,最好設定為yes。
舉例說明:
把 test 主機中的/opt/test
檔案中的所有 abc 替換成 abc。
[root@tlur31drk8wk ~]# ansible test -m replace -a 'path=/opt/test regexp="abc" replace=abc
'
把 test 主機中的/opt/test
檔案中的所有 abc 替換成 abc,操作之前備份。
[root@tlur31drk8wk ~]# ansible test -m replace -a 'path=/opt/test regexp="abc" replace=abc backup=yes
'
感謝原作大佬,跟著大佬學,省時又省力
4 檔案操作
學習目標 1 了解linux的目錄結構 2 掌握linux的目錄操作命令 學習過程 一 linux目錄的基本結構 根目錄,系統中所有的目錄都是從根目錄開始。bin 存放常用命令。boot 引導核心的程式目錄。dev 外部裝置名。etc etcetera 系統管理所要的配置檔案和子目錄。home 存放...
4 檔案操作
對檔案操作 對檔案操作就是對檔案的控制代碼的操作,通過open函式得到檔案的控制代碼。一 r,w,a,x,模式 r 只有讀操作,檔案必須存在。讀的時候預設游標在最開始讀,沒有寫操作,encoding在進行解碼操作。w 無法讀取檔案,只是寫操作,檔案存在覆蓋寫,檔案不存在的話,建立檔案再寫。encod...
Python自學筆記(4) 檔案基本操作
今天的內容比較少,因為明天開始將是到重要的一塊 函式。不管哪種程式語言,函式既是基礎也是重難點。當把函式的內容學懂學透,將會迎來很大的進步與提高。正文 25 各種資料型別的轉換 元組 列表 list tuple 列表 元組 tuple list list str str.join list str ...