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