Переименовать внутри файла crontab

Переименовать внутри файла crontab

Я хотел переименовать имя файла, добавив больше подробностей, чтобы получить ответ на свой вопрос:

У меня есть следующие строки в crontab

00 * * * * /home/@@@@/ulimit_nofile_status_20480.sh >> /export/####/$$$$$/ulimit_nofile_status.txt

00 * * * * /home/@@@@/ulimit_nproc_status_20480.sh >> /export/####/%%%%/ulimit_nproc_status.txt

Я хочу изменить имена файлов ulimit_nofile_status_20480.shи ulimit_nproc_status_20480.shна ulimit_nofile_status_40960.shи ulimit_nproc_status_40960.shсоответственно.

Другими словами, я хочу переименовать 20480 в 40960.

Я попробовал следующие команды, но они мне не помогли.

crontab -l | sed 's#/_20480\.#/40960.#' | crontab -
crontab -l | sed 's/\<_20480\>/40960/' | crontab -
"sed -i s//40960/" crontab -e

решение1

Ваши регулярные выражения — это безумие. Следующее должно сработать.

crontab -l | sed 's#_20480\.#_40960.#' | crontab -

В вашей попытке требовалось наличие косой черты перед подчеркиванием, но, конечно же, в вашем файле ее нет crontab, поэтому регулярное выражение ничего не совпало.

Вы говорите, что хотите заменить 20480на 40960, но несколько ваших попыток выглядят так, будто вы также хотите удалить подчеркивание перед числом. Если это правильно, очевидно, удалите его из строки замены.

Я предполагаю, что вы sedне осознаете \<этого, что в противном случае было бы хорошей попыткой.

Последняя из ваших попыток настолько далека от любого допустимого синтаксиса, что я не думаю, что могу прокомментировать ее осмысленно. Она анализируется как попытка использовать строку sed -i s//40960/как имя команды, с аргументами crontabи -lпереданными ей в качестве параметров.

Связанный контент