在 ubuntu 机器中重命名命令用于重命名一组文件

rename command usage in ubuntu machine for rename a set of files

我有一个 shell 脚本用于重命名文件夹中的多个文件。它在 rhel 主机上工作,但在 ubuntu14 主机上抛出错误。

#!/usr/bin/env bash

SOME_NUMBER=1
rename _file_name.c _file_${SOME_NUMBER}.c path/of/file/*_file_name.c

我应该对代码进行哪些更改才能使其在 ubuntu14 主机上运行?

编辑-1:

对于 运行 ubuntu 机器上的代码,我进行了以下更改并且有效:

rename 's/\_file_name.c$/\_file_1.c/' path/of/file/*_file_name.c

但以下内容不起作用,我收到以下错误消息:

rename 's/\_file_name.c$/\_file_${SOME_NUMBER}.c/' path/of/file/*_file_name.c

错误信息:

Global symbol "$SOME_NUMBER" requires explicit package name at (eval 1) line 1.
Global symbol "$SOME_NUMBER" requires explicit package name at (eval 1) line 1.

单引号防止参数扩展。因为 Perl 和 shell 语法在这方面是相似的,文字字符串 s/\_file_name.c$/\_file_${SOME_NUMBER}.c/ 被传递给 Perl,它试图扩展未定义的变量 $SOME_NUMBER.

改用双引号:

rename "s/\_file_name.c$/\_file_${SOME_NUMBER}.c/" path/of/file/*_file_name.c

Difference between single and double quotes in Bash

请确保您的 shell 脚本中 SOME_NUMBER 的值真的只是一个数字,或者至少是在扩展时生成有效 Perl 表达式的数字。