ansible常用模块之 -- find模块 – 返回基于特定条件的文件列表

ansible常用模块之 -- find模块 – 返回基于特定条件的文件列表

find模块 – 返回基于特定条件的文件列表

一、摘要

  • 返回基于特定条件的文件列表。多个标准被 and 放在一起。
  • 对于Windows目标,使用win_find模块代替。

二、参数

参数选项/默认值描述
age
string
选择年龄大于或等于指定时间的文件。
使用负年龄查找等于或小于指定时间的文件。
您可以通过指定任何这些单词的首字母(例如,“1w”)来选择秒、分钟、小时、天或周。
age_stamp
string
· mtime ⬅️
· atime
· ctime
选择与之比较年龄的文件属性。
contains
string
应该与文件内容匹配的正则表达式或模式。
depth
integer
设置要下降到的最大层数。
将递归设置为no将覆盖这个值,它实际上是深度1。
默认是无限深度。
excludes
list
一个或多个(shell或regex)模式,其类型由use_regex选项控制。
基名与排除模式匹配的项将从模式匹配中剔除。可以使用列表指定多个模式。
file_type
string
· file ⬅️
· any
· directory
· link
要选择的文件类型。
在Ansible 2.3中添加了“link”和“any”选项
follow
boolean
· no ⬅️
· yes
对于使用python 2.6+的系统,将此设置为yes以遵循路径中的符号链接
get_checksum
boolean
· no ⬅️
· yes
将此设置为yes以检索文件的SHA1校验和。
hidden
boolean
· no ⬅️
· yes
将此设置为yes以包含隐藏文件,否则它们将被忽略
paths
list
required
要搜索的目录的路径列表。所有路径必须是完全限定的。
patterns
list
Default:[]一个或多个(shell或regex)模式,其类型由use_regex选项控制。
这些模式将返回的文件列表限制为那些基名至少匹配指定模式中的一个的文件。可以使用列表指定多个模式。
模式是根据文件基名匹配的,不包括目录。
当使用regexen时,模式必须匹配整个文件名,而不仅仅是文件名的一部分。因此,如果您希望匹配所有以.default结尾的文件,则需要使用’.*.default’作为regexp,而不仅仅是’.default’。
这个参数需要一个列表,可以用逗号分隔,也可以用YAML分隔。如果任何模式包含逗号,请确保将它们放在一个列表中,以避免以不希望的方式分割模式。
当use_regex=False时,默认为’*‘,或’.*'当use_regex = True。
recurse
boolean
· no ⬅️
· yes
如果目标是一个目录,则递归向下查找该目录以查找文件
size选择大于或等于指定大小的文件。
使用负大小查找等于或小于指定大小的文件。
不合格的值以字节为单位,但可以添加b、k、m、g和t,分别指定字节、千字节、兆字节、千兆字节和太字节。
不计算目录的大小。
use_regex
boolean
· no ⬅️
· yes
如果 no,则模式为文件glob (shell)。
如果 yes,它们是python正则表达式。

三、示例

# 递归地查找2天以上的/tmp下的文件
- name: Recursively find /tmp files older than 2 days
  find:
    paths: /tmp
    age: 2d
    recurse: yes

# 递归地查找超过4周且大于或等于1兆字节的/tmp下的文件
- name: Recursively find /tmp files older than 4 weeks and equal or greater than 1 megabyte
  find:
    paths: /tmp
    age: 4w
    size: 1m
    recurse: yes

# 递归地查找上一次访问时间大于3600秒的/var/tmp下的文件
- name: Recursively find /var/tmp files with last access time greater than 3600 seconds
  find:
    paths: /var/tmp
    age: 3600
    age_stamp: atime
    recurse: yes

# 找到长度等于或大于10mb的以.old或.log.gz结尾的/var/log下的文件
- name: Find /var/log files equal or greater than 10 megabytes ending with .old or .log.gz
  find:
    paths: /var/log
    patterns: '*.old,*.log.gz'
    size: 10m

# 注意YAML双引号需要转义反斜杠,但YAML单引号不需要。
# 通过regex找到长度等于或大于10mb的以.old或.log.gz结尾的/var/log下的文件
- name: Find /var/log files equal or greater than 10 megabytes ending with .old or .log.gz via regex
  find:
    paths: /var/log
    patterns: "^.*?\\.(?:old|log\\.gz)$"
    size: 10m
    use_regex: yes

# 找到/var/log下所有目录,不包括nginx和mysql
- name: Find /var/log all directories, exclude nginx and mysql
  find:
    paths: /var/log
    recurse: no
    file_type: directory
    excludes: 'nginx,mysql'

# 当使用包含逗号的模式时,请确保它们被格式化为列表,以避免拆分模式
# 使用单个模式,其中包含格式化为列表的逗号
- name: Use a single pattern that contains a comma formatted as a list
  find:
    paths: /var/log
    file_type: file
    use_regex: yes
    patterns: ['^_[0-9]{2,4}_.*.log$']

# 使用多个模式,其中包含格式化为YAML列表的逗号
- name: Use multiple patterns that contain a comma formatted as a YAML list
  find:
    paths: /var/log
    file_type: file
    use_regex: yes
    patterns:
      - '^_[0-9]{2,4}_.*.log$'
      - '^[a-z]{1,5}_.*log$'

官方文档:https://docs.ansible.com/ansible/2.9/modules/find_module.html#find-module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值