Ansible playbook查找子目录中的特定文件
我的目录结构如下,希望使用ansible而不是all获取特定的子目录文件Ansible playbook查找子目录中的特定文件,ansible,Ansible,我的目录结构如下,希望使用ansible而不是all获取特定的子目录文件 /mnt/server1 -> ----> yyy.deb ----> /mnt/server1/All/tttsss.deb ----> /mnt/server1/HS-CLONE/gggg.deb ----> /mnt/server1/HS-TEST/kkkk.deb 我只需要找到/mnt/server1/All/tttsss.deb
/mnt/server1 ->
----> yyy.deb
----> /mnt/server1/All/tttsss.deb
----> /mnt/server1/HS-CLONE/gggg.deb
----> /mnt/server1/HS-TEST/kkkk.deb
我只需要找到/mnt/server1/All/tttsss.deb和/mnt/server1/HS-CLONE/gggggg.deb
目录下的文件。我不需要所有其他文件
当我尝试使用下面的逻辑时,父目录文件yyy.deb
也作为输出
- name: Ansible find files in subdirectory examples
find:
paths: /mnt/server1
file_type: file
recurse: yes
use_regex: yes
patterns:
- 'All'
- "HS-CLONE"
- '.*deb$'
register: files_matched_subdirectory
上述逻辑输出为:
输出:
yyy.deb
/mnt/server1/All/tttsss.deb
/mnt/server1/HS-CLONE/gggg.deb
预期产出应为:
/mnt/server1/All/tttsss.deb
/mnt/server1/HS-CLONE/gggg.deb
之所以会发生这种情况,是因为find命令中有以下特定模式,该模式将与目录
/mnt/server1
中的yyy.deb
匹配
patterns:
- '.*deb$'
您可以使用excludes
参数明确排除此特定文件:
- name: Ansible find files in subdirectory examples
find:
paths: /mnt/server1
file_type: file
recurse: yes
use_regex: yes
patterns:
- 'All'
- "HS-CLONE"
- '.*deb$'
excludes:
- 'yyy.deb'
register: files_matched_subdirectory
或者,您可以在模式参数中尝试以下操作:
patterns:
- 'All'
- "HS-CLONE"
- '*/.*deb$'
谢谢你的回答。上述模式不起作用。是的,我可以省略这个文件。但我可能不知道同一个文件总是存在,文件名可以更改。正在寻找解决此问题的通用模式。但是我用你上面的模式测试了它不起作用。那可能不起作用。我只是想给出一个想法,我们可以调整模式部分。您可以尝试在/之前删除星号。谢谢。。我删除了星号,但它不起作用。将尝试不同的选项。