重命名命令中的转义字符

时间:2019-07-30 18:26:09

标签: bash shell rename

我有一个重命名命令,如下所示:

rename ".csv" "-en.csv" Daily_vills.csv
rename "^" "07302019" Daily*

运行此命令时,出现错误“重命名:无效选项-'e”” 。我已经尝试过“ \ -en.csv”,但这会导致“ Daily_vills \ -en.csv”

我的问题是如何使bash理解-en是替换值而不是参数。

原始

Daily_vills.csv

目标;

07302019Daily_vills-en.csv

对此的任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

使用--通知rename选项结束。

rename -- ".csv" "-en.csv" Daily_vills.csv

来自posix utility conventions

  

准则10:

     

不是选项参数的第一个参数应作为表示选项结尾的定界符被接受。以下所有参数都应视为操作数,即使它们以'-'字符开头。

在许多* nix工具中,通常使用--通知选项结束。例子:

# touch a file named -a
touch -- -a
# cat a file named -a
cat -- -a
# printf the string -b
printf -- -b
# find a string '-c' in files in current directory
grep -- -c *

rename实用程序还遵循posix实用程序约定中的指南。 --可以用来通知rename选项的结束。