Ansible shell调用find以排除具有今天日期的文件

6ss1mwsb  于 2022-11-30  发布在  Shell
关注(0)|答案(1)|浏览(75)

我的团队正面临着Ansible shell命令的问题。我有一个目录与日志文件压缩和以前处理的文件(这是压缩),所有文件的时间戳为YYYY.mm.dd像:

  • somefile.2021.05.19.log
  • somefile.2021.05.20.log
  • somefile.2021.06.18.log.gz

我需要压缩那些不包含当前日期的文件(如果今天是2021.05.20,我就不压缩这个文件)。这意味着在上面的例子中,只有somefile.2021.05.19.log必须被压缩。我使用shell命令:

find /var/log/somedirectory -type f ! -name "*.gz" ! -path "*`date +%Y.%m.%d`*" -exec gzip -9 {} \;

它在Linux shell中运行得很好,并且正在做我需要做的事情:不接受 *.gz文件,也不接受具有当前日期的文件。
我们正在从以前的编排器迁移到Ansible。当使用Ansible shell和此命令时,它不会过滤日期,就像-path没有很好地从Ansible转换到shell一样。我们试图使用空格“或倒勾或 *,但似乎没有任何效果。它总是使用2021.05.19文件,不幸的是2021.05.20文件。
在Ansible中有没有使用这个命令的方法(或者更好的方法)?谢谢。

ovfsdjhp

ovfsdjhp1#

我认为可能是ansible主机和远程主机的时区不同。backtick()里面的命令date +%Y.%m.%d在ansible主机上运行。但是find`命令不是。

相关问题