Вы можете комбинировать bash
арифметику с командой rename
:
i=0
find. -maxdepth 1 -type f -name '*.txt' |
sort -nt_ -k2,2 -k7,7 |
while read filename ; do
rename -v "s/[0-9]+_Image/$((i%5+1))_I/" ${filename}
i=$((i+1))
done
Попробуйте это с опцией -n
команды rename
, которая просто показывает, что делается.
ПРЕДУПРЕЖДЕНИЕ:
Имена файлов берутся из входных данных по каналу, а переменная filename
устанавливается с помощью встроенного здесь read
. Это БУДЕТ прервано, если ваши имена файлов не соответствуют формату, который вы указали в своем вопросе, например. имена файлов с пробелами, новыми строками и т. д. Так что имейте в виду, что вам нужно будет использовать другой подход, например. Опция find
-print0
в сочетании с xargs -0
.
В этом случае используется вспомогательный файл для счетчика и ?
используется как замена переменной:
echo -1 > file_counter
find -name '*txt' -print0 |
sort -znt_ -k2,2 -k7,7 |
xargs -I ? -0 bash -c '
i=$(($(cat file_counter)+1))
rename -n -v "s/[0-9]+_Image/$(($i%5+1))/" ?
echo $i > file_counter
'
Что касается вашего вопроса «... есть ли способ получить эти данные... », чтобы получить статус службы через Ansible Playbooks, вы можете использовать модульservice_facts
.
- name: Gathering Service Facts
service_facts:
tags: snmp
Вы можете записать состояние в файл журнала на основе условий и фактов.
- name: Write SNMP service status
...
when: ("snmp.service" in services)
tags: snmp