本質的に、私はLinuxで "ワイルドカードファイル名"を扱うことができるようにしたいと考えています。本質的に、これは、lsコマンドをファイル名の一部に続けて "*"を使用して特定のファイルのみを一覧表示することを意味します。コマンド出力をアレイに格納する方法は?
しかし、複数のファイル名が返される可能性があるため、出力を適切に変数に格納することはできません。したがって、私は1つのタスクの間に配列内に何が存在しても、これらの結果を格納できるようにしたい。私はその後、後のタスクで配列からすべての結果を取得できるようにしたいと考えています。さらに、返されるファイルの数がわからないので、ファイル名ごとにタスクを実行することができず、配列が理にかなっています。
これは、ランダムに格納された場所に頻繁に変更されるファイルが存在し、常に同じ前半を持つためです。それは無作為である彼らの名前の後半であり、私はそれを完全に難しいものにする必要はありません。
アレイを適切に実装/操作する方法がわからないので、次のコードは私が達成しようとしているものの例です。複数のファイル名が、私はこのトピックの援助を求めていた理由である、返送された場合に明らかに意図した通りに機能しません。
- hosts: <randomservername>
remote_user: remoteguy
become: yes
become_method: sudo
vars:
aaaa: b
tasks:
- name: Copy over all random file contents from directory on control node to target clients. This is to show how to manipulate wildcard filenames.
copy:
src: /opt/home/remoteguy/copyable-files/testdir/
dest: /tmp/
owner: remoteguy
mode: u=rwx,g=r,o=r
ignore_errors: yes
- name: Determine the current filenames and store in variable for later use, obviously for this exercise we know part of the filenames.
shell: "ls {{item}}"
changed_when: false
register: annoying
with_items: [/tmp/this-name-is-annoying*, /tmp/this-name-is-also*]
- name: Run command to cat each file and then capture that output.
shell: cat {{ annoying }}
register: annoying_words
- debug: msg=Here is the output of the two files. {{annoying_words.stdout_lines }}
- name: Now, remove the wildcard files from each server to clean up.
file:
path: '{{ item }}'
state: absent
with_items:
- "{{ annoying.stdout }}"
私はYAMLフォーマットは少しアップmussedしまっ理解し、それが固定されたかどうこれは普通に動作しますが、私が探している出力は得られません。したがって、50個のファイルがあれば、それらをすべて操作したり、すべて削除することなどができるようにしたいと考えています。
もし誰でも私が正しく利用する方法を教えてもらえたら上記のテストコード断片の配列は素晴らしいでしょう!
あなたの質問がたかだか5行に短縮されるようです。私は問題を説明し、あなたの特定の事件以上に関連する最小の例を使用することをお勧めします。 – techraf
techraf:私は少し言い方をすることができますが、このケースでは、より多くの情報が少ないよりも優れていると思いました。将来、私はこのタイプのテキストの爆発を少し下げることができるかどうかを調べるつもりです。 – Viscosity