我想重命名文件名,并提供更多详细信息,以便我能够得到我的问题的答案:
我在 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
参数传递给它。