重命名文件和文件文件目录就是你常常需在Linux系统上推行的一个重要每日每日任务之一。重命名独立文件比较简单,但一次重命名好多个文件可能是一个磨练。
特别是对于刚接触Linux的用户而言。您可以使用GUI文件可视化工具或命令行智能终端重命名文件。
mv命令重命名文件
mv
命令用于将文件从一个位置重命名或移动到另一个位置。那也是mv
命令的基本语法mv [OPTIONS] source destination
。
source
源能是一个或多个文件或文件文件目录,destination
目标可以是独立文件或文件文件目录。
倘若特定好多个文件作为源source
,则destination
目标一定要文件文件目录。在这种情况下,源文件将挪到目标目录。
如果将独立文件指定为源source
,并且目的是为了文件文件目录,则该文件将挪到特定文件文件目录。
要重命名文件,你需要把独立文件指定为源source
,然后把独立文件特定为主要目的destination
。例如,以下mv
命令将file1.txt
重命名为file2.txt
:
mv file1.txt file2.txt
mv命令重命名好多个文件
mv
命令一次仅有重命名一个文件,但它可以与其他命令一起使用,例如find
命令在bash的for或while循环中重命名好多个文件。
在以下案例中显示如何使用Bash for循环将重命名文件页面上全部.html
文件。然后把.html
文件后缀名更改为.php
。
for f in *.html; do
mv -- "$f" "${f%.html}.php"
done
让我们解释一下句子的含义,最容易认可当然就是最后一行是shell/bash关键字done
说明周而复始结束。
第一行创建一个for循环并取值文件目录下以.html
文件文件后缀名的文件。第二行将.html
文件移动并重命名文件。
然后把文件的.html
文件后缀名替换为.php
。${f%.html}
使用的是shell基本参数扩展,.html
很有可能匹配文件名原来文件后缀名,相符的.html
便会被删除。
从案例中可以看出,运用mv
命令重命名好多个文件并不是一件容易的事,因为她要你能够更好地把握Bash辅助制作程序编程。
mv
命令除开可以跟shell脚本的for循环结合之外。大家可以让mv
结合find
命令来实现与上面相同的功效。
大伙儿还可以使用find
命令查找/检索文件目录下以.html
结尾的文件。然后使用-exec
对每一个文件运作特定命令。
-exec
容许特定要运转的命令,find
命令将检索的每一个结果一个接一个传输-exec
要运转的命令中。
也可以从-exec
运转的命令运用字符串数组{}
获得正在升级的文件,如果你在运用find命令查找文件运用绝对路径,字符串数组{}
将是一个文件的绝对路径。
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
下面我们解释一下上面的find和-exec,mv是怎么搭配所使用的。
find命令之后.
说明文件目录,find的-depth
选项说明递归算法文件页面上的所有文件文件目录,-name
选项明确提出了运用名称进行搜索。
"*.html"
通常加上冒号是防止*
号被shell描述,*.html
说明以.html作为文件后缀名的文件。
-exec sh -c
说明-exec
要运作命令是sh -c
。在类 Unix 电脑系统上,sh是Bourne shell名名称,是Unix和大部分类Unix电脑系统/Linux的需求命令语言表达能力编译程序。-c
是sh选项说明加载命令字符串数组并运作。
'f="{}"; mv -- "$f" "${f%.html}.php"'
这是一个命令的字符串数组,我认为你应该知道大概寓意,我们这里简单说一下。f="{}"
提出要{}
选值给变量f
,{}
是文件名。
最后'f="{}"; mv -- "$f" "${f%.html}.php"'
这一命令字符串数组将由sh
来表示并运作。分号;
结束exec开展的命令。它得用进行转义,那般你在里面运转的shell 就不会把它当做自己特殊符号,而是将它传递给find。
rename命令重命名文件
rename
用于重命名好多个文件。rename命令比照mv
,你需要一些正则匹配最高级别理论知识。
rename
命令主要有两种版本,句法不一样。在教学中,我们在这里运用rename
命令的perl版本。假如你系统内未安装此版本,则能用发行版的app包管理器拼装该版本。
如果你计算机运作就是指依据Debian的Linux发行版,例如Ubuntu,Linux mint。可运作命令sudo apt update && sudo apt install rename
拼装rename。
对于依据Redhat的Linux发行版,例如CentOS,Fedora。可运作命令sudo apt update && sudo apt install rename
拼装rename。
Arch Linux用户可运作命令yay perl-rename
或者yaourt -S perl-rename
拼装rename。
sudo apt update && sudo apt install rename
sudo yum install prename
yay perl-rename ## or yaourt -S perl-rename
rename
命令的句法结构是rename [OPTIONS] perlexpr files
。files说明好多个文件,perlexpr
采用的是perl的正则匹配。
rename
命令将好多个文件根据指定正则匹配重命名所有文件。你可以在这里阅读更多相关Perl的正则匹配的基本知识。
perl的正则匹配基本语法是action/SEARCHLIST/REPLACEMENTLIST/cdsr
。在重命名文件的perl正则匹配常见的s///拆换方法。
action
说明我们需要推行操作过程,SEARCHLIST
说明我们需要检索具体内容,REPLACEMENTLIST
说明我们需要REPLACEMENTLIST
拆换SEARCHLIST
。
应用rename重命名文件时,您还可以运用-n
基本参数在不真实的运作reanme命令尝试打印出要重命名的文件的名称。这也会不会不重命名你文件,适合于做简易检验。
默认情况下,rename
命令不易遮住现阶段文件。传输-f
基本参数以允许遮住现阶段文件。
例如,下面的rename命令将变动与文件后缀名.html
到.php
。
rename 's/.html/.php/' *.html
rename -f 's/.html/.php/' *.html #遮住现阶段文件
rename -n 's/.html/.php/' *.html #尝试运作,用于检验
导出来看起来像那般:
rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)
下列属于一些如何使用rename命令比较常见的案例。
用下横线拆换文件名中的空格符
rename 'y/ /_/' *
将文件名转化成小写
rename 'y/A-Z/a-z/' *
将文件名转换成英文英文大写
rename 'y/a-z/A-Z/' *
结论
到这里您应该更好的了解如何使用mv
和rename
命令重命名文件。当然,还有其他命令也可以在Linux中重命名文件,例如mmv
。对已经Linux用户可以运用GUI大批重命名常用工具,例如Mtamorphose。
