Один из способов с rename:
rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *
В режиме -n ono это только печатает изменения, удаляет этот флаг для выполнения переименования. Первое выражение просто удаляет каждый дефис, второй сохраняет строки и заменяет часть подчеркивания.
Альтернативой является сохранение всего, что вам нужно в группах, таким образом вы также можете быстро изменить, например. дата:
rename -n 's/(\d*)-(\d*)-(\d*)___(\w*)_(\w*)_(\w*)_/$1$2$3.IT.$5$6.$4./' *
$ rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *
rename(2015-08-25___ANJ_BH_E_txt, 20150825.IT.BHE.ANJ.txt)
rename(2015-08-25___HSB_BH_Z_txt, 20150825.IT.BHZ.HSB.txt)
rename(2015-08-25___LSA_SP_E_txt, 20150825.IT.SPE.LSA.txt)
rename(2015-08-25___TEH_SP_N_txt, 20150825.IT.SPN.TEH.txt)
Вам нужно запустить crontab -e для пользователя, который запустит скрипт - sudo crontab -e для root или sudo -u user_name -e, для редактирования crontab для имени пользователя. Вставьте @reboot /path/to/file (NB! Не забывайте пустую новую строку). Сам сценарий должен выглядеть так:
#!/bin/bash
do_your_stuff
# remove from root specific crontab setting all the information about the script
sed -i '/@reboot \/path\/to\/file/d' /var/spool/cron/crontabs/root
# remove the script file itself
rm -- "$0"
# reboot the machine in 2 minutes
shutdown -r +2
Чтобы автоматизировать этот процесс, вы можете использовать Ansible. Вот пример простой пьесы, я запустил ее на своем локальном хосте:
---
- hosts: localhost
tasks:
- name: cron job
cron:
name: "a job for reboot"
special_time: reboot
job: "/path/to/file"
Во-первых, вам нужно запустить playbook, он обновляет задачи cron для root. После перезагрузки сценарий должен быть удален так же, как запись файла /var/spool/cron/crontabs/root с строкой root . Вы можете свободно изменять файл, чтобы полностью удалить crontab для root.
Вам нужно запустить crontab -e для пользователя, который запустит скрипт - sudo crontab -e для root или sudo -u user_name -e, для редактирования crontab для имени пользователя. Вставьте @reboot /path/to/file (NB! Не забывайте пустую новую строку). Сам сценарий должен выглядеть так:
#!/bin/bash
do_your_stuff
# remove from root specific crontab setting all the information about the script
sed -i '/@reboot \/path\/to\/file/d' /var/spool/cron/crontabs/root
# remove the script file itself
rm -- "$0"
# reboot the machine in 2 minutes
shutdown -r +2
Чтобы автоматизировать этот процесс, вы можете использовать Ansible. Вот пример простой пьесы, я запустил ее на своем локальном хосте:
---
- hosts: localhost
tasks:
- name: cron job
cron:
name: "a job for reboot"
special_time: reboot
job: "/path/to/file"
Во-первых, вам нужно запустить playbook, он обновляет задачи cron для root. После перезагрузки сценарий должен быть удален так же, как запись файла /var/spool/cron/crontabs/root с строкой root . Вы можете свободно изменять файл, чтобы полностью удалить crontab для root.
Вам нужно запустить crontab -e для пользователя, который запустит скрипт - sudo crontab -e для root или sudo -u user_name -e, для редактирования crontab для имени пользователя. Вставьте @reboot /path/to/file (NB! Не забывайте пустую новую строку). Сам сценарий должен выглядеть так:
#!/bin/bash
do_your_stuff
# remove from root specific crontab setting all the information about the script
sed -i '/@reboot \/path\/to\/file/d' /var/spool/cron/crontabs/root
# remove the script file itself
rm -- "$0"
# reboot the machine in 2 minutes
shutdown -r +2
Чтобы автоматизировать этот процесс, вы можете использовать Ansible. Вот пример простой пьесы, я запустил ее на своем локальном хосте:
---
- hosts: localhost
tasks:
- name: cron job
cron:
name: "a job for reboot"
special_time: reboot
job: "/path/to/file"
Во-первых, вам нужно запустить playbook, он обновляет задачи cron для root. После перезагрузки сценарий должен быть удален так же, как запись файла /var/spool/cron/crontabs/root с строкой root . Вы можете свободно изменять файл, чтобы полностью удалить crontab для root.