
Я хотел переименовать имя файла, добавив больше подробностей, чтобы получить ответ на свой вопрос:
У меня есть следующие строки в 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
переданными ей в качестве параметров.