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參數中的表達式。
contains參數:使用此參數可以根據文章內容查找文件,此參數的值為一個正則表達式,find模塊會根據對應的正則表達式匹配文件內容。
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校驗碼,如果要查找的文件比較大,那么生成校驗碼的時間會比較長。
[root@Jenkins findmodule]# cat find.yml
---
- hosts: all
remote_user: root
gather_facts: false
tasks:
- name: "查找目標服務器上的文件"
find:
path: "/opt/tomcat/logs"
file_type: "file"
patterns: "manager.2019-01*.log"
register: "findlog"
- name: "file模塊刪除找到的日志文件"
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ findlog.files }}"