如何通过添加第一个符号 - 点来重命名 bash 的文件?

How to rename file with bash by adding first symbol - dot?

我想将我的文件从 myscript.js 重命名为 .myscript.js。我怎样才能用 bash 做到这一点?我已经尝试了不同的选项,例如 mv myscript.js \.*,但它不起作用。我尝试通过添加非点符号进行实验,例如 - mv myscript.js m*,但现在我什至不知道我的文件在哪里(当然,我有一个副本;)。

你太努力了。

mv myscript.js .myscript.js

您可以使用 rename 实用程序重命名所有 *.js 文件,方法是在它们前面放一个点:

rename 's/(.+\.js)/./' *.js

或者在纯 BASH 中使用这个 for 循环:

for i in *.js; do mv "$i" ".$i"; done

大括号展开

mv {,.}myscript.js

不要使用模式作为 mv(或 cp 的目标)。大多数情况下,该命令不会执行您想要或期望的操作:Bash 将在您 运行 命令时扩展模式,使用原样的文件名 之前 你的命令被执行了。因此 .* 不匹配任何内容(因为该文件尚不存在)并且 m* 将匹配任何以 m 开头的文件或文件夹。由于您没有收到错误,最后一场比赛很可能是一个文件夹。

无法访问当前命令的前一个参数。如果你想避免输入太多,那么对两个文件名都使用 Tab(所以你最终会得到 mv myscript.js myscript.js),然后使用 Ctrl+LeftCtrl+Right 快速移动到第二个参数的开头以插入缺失的 ..

不过您可以访问 parameters of the previous command。但这不是 BASH 的特性——它是 readline 的特性。