重命名crontab文件中的文件名

时间:2018-03-02 19:35:29

标签: linux bash shell cron

我的下面的文件是我的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 -

2 个答案:

答案 0 :(得分:1)

我会亲自使用crontab -e进行编辑,但如果您想使用sed进行编辑,那么此行似乎就是这样做的:

crontab -l | sed 's/20480/40960/' | crontab -

答案 1 :(得分:0)

试试这个:

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

如果可行,那么(并且那么),使用它来实际进行更改:

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

你的第一次尝试没有成功的原因是你有&#34; /_20480\.&#34;作为模式,斜线使其不匹配。看起来你混合使用&#34; /&#34;和&#34;#&#34;作为模式分隔符;你可以使用任何一个,但不能同时使用两个。 (我使用&#34; /&#34;上面。)

您的第二次尝试无效的原因是您尝试在模式中使用\<\>。正则表达式语法的某些变体使用这些作为单词边界分隔符,但sed使用的变体(POSIX "basic" regex syntax)不会 - 它们只是被视为文字字符和&#39} #34;&LT;&#34;和&#34;&gt;&#34;,因为那些不在文件名中出现,所以它没有匹配。