如何使用 Puppet 删除目录中除某些 glob 之外的所有文件?

如何使用 Puppet 删除目录中除某些 glob 之外的所有文件?

不幸的是,拼写检查器没有针对地区打包,所以之后安装英语、法语和德语词典我得到了这个巨大的集合:

$ find /usr/share/myspell/dicts/ -name '*.dic' | cut -d '/' -f 6 | cut -d '.' -f 1 | sort
de_AT
de_BE
de_CH
de_DE
de_LI
de_LU
en_AG
en_AU
en_BS
en_BW
en_BZ
en_CA
en_DK
en_GB
en_GH
en_HK
en_IE
en_IN
en_JM
en_NA
en_NG
en_NZ
en_PH
en_SG
en_TT
en_US
en_ZA
en_ZW
fr_BE
fr_CA
fr_CH
fr_FR
fr_LU

英语中所说的丹麦,它甚至不是官方语言?无论如何,我想保留de_CH*de_DE*en_GB*en_US*fr_FR*,并删除所有其他文件。有没有办法使用 Puppet 来实现这一目标?

答案1

其实,它看起来这是一个已解决的问题解决方案:

class spell_checker {
  package {
    [
      'aspell-de',
      'aspell-en',
      'aspell-fr',
      'hunspell-de',
      'hunspell-en',
      'hunspell-fr',
    ]:
      ensure => latest,
  }->
  file{
    [
      '/usr/share/hunspell',
      '/usr/share/myspell/dicts',
    ]:
    recurse => true,
    purge   => true,
    ignore  => [
      'de_CH.*',
      'de_DE.*',
      'en_GB.*',
      'en_US.*',
      'fr_FR.*',
    ],
  }
}

最终结果:

$ find /usr/share/myspell/dicts/ -name '*.dic' | cut -d '/' -f 6 | cut -d '.' -f 1 | sort
de_CH
de_DE
en_GB
en_US
fr_FR

相关内容