Re: Find module results not returning as expected

11 views
Skip to first unread message
Message has been deleted

flowerysong

unread,
Apr 7, 2018, 9:14:12 AM4/7/18
to Ansible Project
On Saturday, April 7, 2018 at 8:50:44 AM UTC-4, Gabriel Forster wrote:
Using the find module to find unknown files in a given directory and register the results as a variable to be looped through later on. The debug of the registered var shows a full on array of all kinds of attributes about the files (way more than I want) - except the file name! It does show the file name in the files.path, which I should be able to filter with basename, but that doesn't work either. This either should be much more straightforward, or my understanding of this is way off.

Question: How do I store unknown file names in a dir as a list that I can loop through in a subsequent task?


My current play (I've tried a few different iterations - and the echo is just an example, would like to do other things like use the script module and such):

 ---
 
- hosts: localhost
   tasks
:
     
- name: Check the files
       find
:
         paths
: /home/gforster/projects/scripts
       
register: files_found
 
     - name: echo files
       command
: "echo {{ item.path | basename }}"
       loop
: "{{ files_found.files }}"




Expected Results:

TASK [echo files] *********************************************************************************************************************
changed
: [localhost] => {
   
"msg": "some_filesname"
}

If you want to output a message use the debug module, not "command: echo".

    - name: echo files
      debug:
        msg: "{{ item.path | basename }}"
      loop: "{{ files_found.files }}"


TASK [echo files] **************************************************************
ok: [localhost] => (item=None) => {
    "msg": "vault.zip"
}

Kai Stian Olstad

unread,
Apr 8, 2018, 3:59:06 PM4/8/18
to ansible...@googlegroups.com
On Saturday, 7 April 2018 14.50.44 CEST Gabriel Forster wrote:
> Using the find module to find unknown files in a given directory and
> register the results as a variable to be looped through later on. The debug
> of the registered var shows a full on array of all kinds of attributes
> about the files (way more than I want) - except the file name! It does show
> the file name in the files.path, which I should be able to filter with
> basename, but that doesn't work either. This either should be much more
> straightforward, or my understanding of this is way off.
>
> Question: How do I store unknown file names in a dir as a list that I can
> loop through in a subsequent task?
>
>
> My current play (I've tried a few different iterations - and the echo is
> just an example, would like to do other things like use the script module
> and such):
>
> ---
> - hosts: localhost
> tasks:
> - name: Check the files
> find:
> paths: /home/gforster/projects/scripts
> register: files_found
>
> - name: echo files
> command: "echo {{ item.path | basename }}"
> loop: "{{ files_found.files }}"

It's nothing wrong with this.


> Expected Results:
>
> TASK [echo files]
> *********************************************************************************************************************
> changed: [localhost] => {
> "msg": "some_filesname"
> }

If you looking for something like this you need to use the debug instead of command module.

- name: echo files
debug: msg="{{ item.path | basename }}"
loop: "{{ files_found.files }}"


> Actual Results:
> TASK [echo files]
> *********************************************************************************************************************
> changed: [localhost] => (item={u'uid': 1000, u'woth': True, u'mtime':
> 1522857501.1654217, u'inode': 20547673299942532, u'isgid': False, u'size':
> 359, u'roth': True, u'isuid': False, u'isreg': True, u'pw_name': u'gforster'
> , u'gid': 1000, u'ischr': False, u'wusr': True, u'xoth': False, u'rusr':
> True, u'nlink': 1, u'issock': False, u'rgrp': True, u'gr_name': u'gforster',
> u'path': u'/home/gforster/projects/scripts/101_names', u'xusr': False, u
> 'atime': 1522857501.1649039, u'isdir': False, u'ctime': 1522857501.1654217,
> u'wgrp': True, u'xgrp': False, u'dev': 2, u'isblk': False, u'isfifo': False,
> u'mode': u'0666', u'islnk': False})
> changed: [localhost] => (item={u'uid': 1000, u'woth': True, u'mtime':
> 1522857463.1172974, u'inode': 9570149208257507, u'isgid': False, u'size':
> 1261, u'roth': True, u'isuid': False, u'isreg': True, u'pw_name': u
> 'gforster', u'gid': 1000, u'ischr': False, u'wusr': True, u'xoth': False, u
> 'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'gr_name': u
> 'gforster', u'path': u'/home/gforster/projects/scripts/101_to_masterfile', u
> 'xusr': False, u'atime': 1522857457.6757936, u'isdir': False, u'ctime':
> 1522857463.1829827, u'wgrp': True, u'xgrp': False, u'dev': 2, u'isblk':
> False, u'isfifo': False, u'mode': u'0666', u'islnk': False})

You output is missing a lot of things, are you sure that you copied all?


--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages