linux更改文件名的命令有两个:1、mv命令,既可以重命名文件linux修改文件名字命令,又可以联通文件或文件夹,更改句型“mv[参数]旧文件名新文件名”;2、rename命令linux命令行,可用字符串替换的形式批量改变文件名,句型“rename[参数]旧文件名新文件名”。
本教程操作环境:CentOS6系统、DellG3笔记本。
在Linux下重命名文件或目录,可以使用mv命令或rename命令,这儿分享下两者的使用技巧。
1、使用mv命令
mv命令既可以重命名,又可以联通文件或文件夹。
mv [参数] 旧文件/目录 新文件名/目录
登陆后复制
事例:将目录A重命名为B
mv A B
登陆后复制
事例:将/a目录联通到/b下,并重命名为c
mv /a /b/c
登陆后复制
虽然在文本模式中要重命名文件或目录,只须要使用mv命令就可以了,例如说要将一个名为abc的文件重命名为1234:
mv abc 1234
登陆后复制
注意,假若当前目录下也有个1234的文件的话linux修改文件名字命令,这个文件是会将它覆盖的。
怎样使用mv命令重命名多个文件?
mv命令一次只能重命名一个文件linux vps,但它可以与其他命令一起使用,比如find在bashfor或while循环来重命名多个文件。
示例:怎样通过使用bashfor循环来重命名当前目录中的所有.html文件,将.html扩充名修改为.php。
for f in *.html; do mv -- "$f" "${f%.html}.php" done
登陆后复制
让我们逐行剖析代码:
●第一行创建一个for循环并遍历一个包含所有文件的列表.html。
●第二行适用于列表中的每位项目和文件联通到一个新的替换.html用.php。该部份${file%.html}使用shell参数扩充.html从文件名中删掉部份。
●done表示循环段的结束。
我们也可以mv结合使用该命令find来实现与前面相同的功能。
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
登陆后复制
find命令使用该开关将所有.html以当前目录结尾的文件mv一个接一个地传递给命令-exec。该字符串{}是当前正在处理的文件的名称。
前面的示例中可以看出,使用该mv命令重命名多个文件并不是一件容易的事,由于它须要挺好地了解Bash脚本。
2、使用rename命令
rename命令用字符串替换的形式批量改变文件名。
# 将main1.c重命名为main.c rename main1.c main.c main1.c
登陆后复制
? 可替代单个字符 * 可替代多个字符 [charset] 可替代charset集中的任意单个字符
登陆后复制
文件夹中有这种文件foo1,…,foo9,foo10,…,foo278
假如使用renamefoofoo0foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符宽度名称的文件,文件名中的foo被替换为foo0。
假如使用renamefoofoo0foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符宽度名称的文件,文件名中的foo被替换为foo0。
假如使用renamefoofoo0foo*,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。
假如使用renamefoo0foofoo0[2]*,从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。
# 把文件名中的AA替换成aa rename "s/AA/aa/" * # 把.html 后缀的改成 .php后缀 rename "s//.html//.php/" * # 把所有的文件名都以txt结尾 rename "s/$//.txt/" * # 把所有以.txt结尾的文件名的.txt删掉 rename "s//.txt//" *
登陆后复制
默认情况下,重命名命令不会覆盖现有文件;但传递-f参数就可以容许覆盖现有文件。
rename -f 's/.html/.php/' *.html
登陆后复制
常见的使用rename命令示例
用顿号替换文件名中的空格
rename 'y/ /_/' *
登陆后复制
将文件名转换为大写
rename 'y/A-Z/a-z/' *
登陆后复制
将文件名转换为小写
rename 'y/a-z/A-Z/' *
登陆后复制