Ubuntu 别名重命名目录问题

Ubuntu 别名重命名目录问题

我的系统中安装了 Ubuntu 14.04 Trusty Tahr。

我在‘~/.bashrc’文件中创建了以下别名,以便在当前文件夹中递归重命名目录,就像使用短命令一样容易。

renamedirs() {
    find . -depth -type d -not -name '.' -exec rename 's/$1/$2/' {} +
}
alias rendirs=renamedirs

我已经做了source ~/.bashrc

但是当我以下面的方式运行这个别名时,

rendirs Olddir Newdir

我收到以下错误:

Use of uninitialized value $1 in regexp compilation at (eval 33) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 33) line 1.
Use of uninitialized value $1 in regexp compilation at (eval 34) line 1.
Use of uninitialized value $2 in substitution iterator at (eval 34) line 1.
...
...

谁能告诉我这里出了什么问题?

答案1

'...'Bash 对单引号和双引号进行了区分"..."

单引号会导致所括住的文本按字面意思理解,而双引号允许对字符串进行各种解释,如变量扩展。

$x如果您的字符串中有想要扩展的类似 Bash 变量,则必须使用双引号。

此外,直接命名您的函数rendirs,如果第一个名称不被使用,就不要使用别名来添加第二个名称。

rendirs() {
    find . -depth -type d -not -name '.' -exec rename "s/$1/$2/" {} +
}

相关内容