Ansible剧本,可在子目录中查找特定文件

时间:2019-09-19 20:15:13

标签: ansible

我具有以下目录结构,想使用ansible而不是全部来获取特定的子目录文件。

/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 and /mnt/server1/HS-CLONE/gggg.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

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您在find命令中具有以下特定模式,该模式与目录if (logo != nil) { logoView.image = logo; } else { NSString *imagePath = [XXUtility pathForResourceNamed:@"Logo" withExtension:@"png"]; UIImage *imageToAdd = [[UIImage alloc] initWithContentsOfFile:imagePath]; logoView.image = imageToAdd; } NSString * labelString = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"welcom banner", @"userInterface", [XXUtility bundleForStrings], @"Dear %@, welcome into game", @"user welcome banner text"), name]; CGSize labelSize = [labelString sizeWithAttributes:@{NSFontAttributeName : textLabel.font}]; textLabel.text = labelString; 中的yyy.deb匹配

/mnt/server1

您可以使用patterns: - '.*deb$' 参数明确排除此特定文件:

excludes

或者您可以在pattern参数中尝试以下方法:

- 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