首页 > 解决方案 > 重命名命令中的转义字符

问题描述

我有一个重命名命令如下:

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

非常感谢您对此的任何帮助

标签: bashshellrename

解决方案


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

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

posix 实用程序约定

准则 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选项结束。


推荐阅读