
jimlu
V1
2023/04/11阅读:12主题:默认主题
find模块
一、概述
find 模块用来按照匹配条件查找远程主机上的文件,跟Linux系统中的find命令一样。
二、模块常用参数
参数名 | 描述信息 |
---|---|
paths | (必须)指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开,此参数有别名,使用别名path或者别名name可以代替paths。 |
recurse | 默认只会在指定的目录中查找文件,如果想要递归的查找文件,需要使用recurse参数,当recurse参数设置为yes时,表示在指定目录中递归的查找文件。 |
hidden | 默认为no,当hidden参数的值设置为yes时,才会查找隐藏文件。 |
file_type | 如果想要指定查找的文件类型,可以通过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校验码,如果要查找的文件比较大,那么生成校验码的时间会比较长。 |
三、范例
1、在/etc/ssh目录下查找开头包含#Port的文件
# more find.yaml
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /etc/ssh/
contains: "^#Port"
register: d
- debug:
var: d
2、在/home/admin/jin目录下查找以.sh结尾的文件
# ls
ansible.cfg destdir etc find.yaml hosts jindu1.sh jindu.sh test
# more find.yaml
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /home/admin/jin
patterns: "*.sh"
register: d
- debug:
var: d.files
3、在/home/admin/jin目录下递归查找所有目录
# more find.yaml
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /home/admin/jin
recurse: yes
file_type: directory
register: d
- debug:
var: d.files
4、查找3天以前创建的文件
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /home/admin/jin
recurse: yes
file_type: any
age: 3d
age_stamp: ctime
register: d
- debug:
var: d.files
5、查找1天以内修改过的文件
# more find.yaml
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /home/admin/jin
recurse: yes
file_type: any
age: -1d
age_stamp: mtime
register: d
- debug:
var: d.files
6、查找大于500b的文件
# more find.yaml
---
- name: test find
hosts: localhost
gather_facts: no
tasks:
- name: find contain
find:
paths: /home/admin/jin
recurse: yes
file_type: file
size: 500b
register: d
- debug:
var: d.files
作者介绍

jimlu
V1