Удалить все файлы, содержащие определенное имя в каталоге

У меня есть следующий каталог и он имеет следующие

/tmp/test/file1.txt
/tmp/test/file1.txt.backup
/tmp/test/mywords.csv

How do I use the file component to just remove file1* files??

Ответ 1

edit: теперь был выпущен Ansible 2.0, поэтому предыдущий ответ должен работать, и теперь вы можете теперь цикл над файловыми файлами. Обратите внимание, что это работает, только если вы используете Ansible локально:

- file:
    path: "{{item}}"
    state: absent
  with_fileglob:
    - /tmp/test/file*

оригинальный ответ:

Я не могу найти способ сделать это сейчас, не отбрасывая его, но если вы можете перейти к оболочке, чтобы собрать список файлов, соответствующих шаблону, и сохранить это как переменную, то вы можете перебрать файловый модуль with with_items

Ansible 2.0 будет включать в себя модуль "find", который получит список для вас: http://docs.ansible.com/ansible/find_module.html

Вот несколько задач, которые должны сделать это в незаменимом 2.0, но у меня его нет, поэтому я его не тестировал и может неправильно получать результаты поиска.

- find:
    paths: "/tmp/test"
    patterns: "file*"
  register: result

- file:
    path: "{{item.path}}" #correction code
    state: absent
  with_items: result.files

Ответ 2

Итак, я не нахожусь перед терминалом linux, но вы можете использовать это, если пытаетесь убедиться, что вы удаляете только файлы, которые являются файлами. Должен работать, но вам может потребоваться настроить его.

find . -name files1* -type f -exec basename {} \; | xargs rm

Ответ 3

вы можете использовать файловый модуль find +, как показано выше, но на недоступном < 2.0 Я получил эту ошибку:

ERROR: find is not a legal parameter in an Ansible task or handler

будет выполняться следующая команда (вы можете заменить -regex на -name "files1 *" ):

- name: delete files
  shell: 'find /tmp/test/ -maxdepth 1 -type f -regex "/tmp/test/file1.*" -exec rm -rf {} \;'

Ответ 4

- hosts: srv-lnx
  gather_facts: no

  tasks:
    - shell: "find /var/tmp/collect -maxdepth 1 -type f | awk -F/ '{print $NF}'"
      register: result

    - debug: var=result

    - fetch: src=/var/tmp/collect/{{ item }} dest=/appl/collect/data flat=yes
      with_items: result.stdout_lines