重命名crontab文件中的文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重命名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 -
答案

我个人只是使​​用crontab -e进行编辑,但是如果你想用sed来做,这条线似乎是这样做的:

crontab -l | sed 's/20480/40960/' | crontab -
另一答案

试试这个:

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

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

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

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

你的第二次尝试不起作用的原因是你试图在模式中使用<>。正则表达式语法的一些变体使用这些作为单词边界分隔符,但sed使用的变体(POSIX "basic" regex syntax)没有 - 它们只被视为文字字符“”,因为那些不出现在文件名中,它不匹配。

以上是关于重命名crontab文件中的文件名的主要内容,如果未能解决你的问题,请参考以下文章

python重命名多个文件

Bat批处理:批量重命名包含指定名称文件夹里的指定文件

批量重命名文件

如何重命名文件并覆盖 VBS 中的现有文件?

节点:尝试重命名目录中的每个文件会跳过一些

重命名两个目录中的文件名如果它们之间的某些字符匹配 - 矢量下标超出范围