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

时间:2015-01-22 15:49:47

标签: bash file-rename

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

4 个答案:

答案 0 :(得分:3)

你太努力了。

mv myscript.js .myscript.js

答案 1 :(得分:2)

支持扩张

mv {,.}myscript.js

答案 2 :(得分:1)

您可以使用rename实用程序通过在它们前面放置一个点来重命名所有*.js文件:

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

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

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

答案 3 :(得分:1)

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

无法访问当前命令的上一个参数。如果你想避免键入太多,那么使用 Tab 作为两个文件名(所以最后得到mv myscript.js myscript.js)然后使用 Ctrl + Left 和< kbd> Ctrl + Right 快速移动到第二个参数的开头以插入缺少的.

但是,您可以访问parameters of the previous command。但这并不是BASH的特色 - 它是readline的一个特色。