在 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 表达式的数字。
我有一个 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 表达式的数字。