Я пытаюсь удалить оставшиеся файлы из нескольких каталогов на удаленном хосте , используя Ansible playbook.
/some_dir
├── dir_1
│ └── file_A
├── dir_2
│ └── file_B
└── dir_3
└── file_C
Если бы я использовал сценарий оболочки, например, я бы использовал простой глобус, такой как rm -rf /some_dir/dir_*/file_*
, он достаточно специфичен. Я хотел бы придерживаться лучших методов Ansible ™, поэтому я решил пойти с комбинацией find
и file
модулей.
tasks:
- name: Find files to remove by patterns
find:
paths: "/some_dir/dir_*/"
patterns: "file_*"
Однако подстановочные знаки, похоже, не работают в find
paths
, они считаются буквальными.
Есть ли способ обойти эти ограничения?
Примечания:
- Я понимаю, что я мог бы искать
file_[A-Z]
в some_dir
рекурсивно, но тогда он мог бы перехватить /some_dir/very_important_stuff/file_0
(я воспользуюсь этим решением, если все остальное не поможет)
- Возможно, я могу использовать команды оболочки или сценарии, чтобы использовать расширение оболочки на удаленном хосте, а затем проанализировать его стандартный вывод, чтобы получить список файлов, но это звучит как склонный к ошибкам хак
- В этом конкретном случае я могу запустить две
find
задачи: найти все dir_*
в some_dir
, затем использовать их как список paths
, чтобы найти file_*
с, но, поскольку эта задача (и) ) это часть большого реального плейбука, его будет слишком сложно использовать для путей с подстановочными знаками в произвольных позициях (/some_dir/dir_*/other/cruft/subdirs/*.cache
).