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