我想将我的文件从
myscript.js
重命名为 .myscript.js
。我怎样才能用 bash 做到这一点?我尝试过不同的选项,例如mv myscript.js \.*
,但它不起作用。我尝试通过添加非点符号(如 - mv myscript.js m*
)进行实验,但现在我什至不知道我的文件在哪里(当然,我有一个副本;)。
你太努力了。
mv myscript.js .myscript.js
您可以使用
rename
实用程序重命名所有 *.js
文件,方法是在它们前面放置一个点:
rename 's/(.+\.js)/.$1/' *.js
或者在纯 BASH 中使用这个 for 循环:
for i in *.js; do mv "$i" ".$i"; done
不要使用模式作为
mv
(或 cp
)的目标。大多数情况下,该命令不会执行您想要或期望的操作:Bash 将在您运行命令时扩展模式,使用命令执行之前的文件名。因此 .*
不匹配任何内容(因为该文件尚不存在),并且 m*
将匹配以 m
开头的任何文件或文件夹。由于您没有收到错误,因此最后一个匹配项很可能是一个文件夹。无法访问当前命令的前一个参数。如果您想避免输入太多内容,请对两个文件名使用 Tab
(这样最终会得到 mv myscript.js myscript.js
),然后使用
Ctrl+Left和 Ctrl+Right 快速移动到文件的开头第二个参数用于插入缺失的
.
。不过,您可以访问上一个命令的参数