find命令是Linux系统管理员中最强大的工具之一。它可以根据用户指定文件属性在目录搜索文件目录,并且可以对搜索结果执行用户指定的操作。
您可以使用find
命令根据权限,类型,日期,所有权,大小等搜索文件目录。它也可以与其他工具结合使用,例如grep
命令或sed
命令。
rename
命令是通过指定搜索表达式来批量重命名文件。rename
命令其实是Perl脚本。您可以在此处阅读Perl正则表达式的更多信息。
在本教程我们将说明如何在Liunx 组合使用find
exec
命令,mv
,rename
命令递归修改文件扩展名。
Find exec 命令批量修改文件名
使用find exec命令可让你以轻松重命名文件。在组合使用find exec命令还需要使用mv。mv 命令是用于移动文件或者重命名文件。
以下命令将会修改当前目录的所有*.txt
文件扩展名为.js
。-exec
运行sh
命令启动子shell进程。
sh -c 'mv "$1" "${1%.txt}.edefg"'
子shell进程运行命令mv "$1" "${1%.txt}.js"
。${1%.txt}.js
参数将会匹配原始文件扩展名的txt
并替换为js
。
find . -type f -name '*.txt' -exec sh -c 'mv "$1" "${1%.txt}.js"' _ {} \;
rename 命令批量修改文件名
如果你的系统未安装rename,命令将显示rename: command not found,rename命令未找到。您可以使用发行版的软件包管理器轻松安装rename。
如果你的计算机运行的是基于Debian的Linux发行版,例如Ubuntu,Linux mint。请运行命令sudo apt update && sudo apt install rename
安装rename。
如果你的计算机运行的是基于RedHat的Linux发行版,例如CentOS,Fedora。请运行命令sudo dnf install prename
安装prename。
sudo apt update
sudo apt install rename
sudo yum install prename
用下划线替换文件名中的空格
rename 'y/ /_/' *
将文件名转换为小写
rename 'y/A-Z/a-z/' *
将文件名转换为大写
rename 'y/a-z/A-Z/' *
从文件名中删除.bak
rename 's/\.bak$//' *.bak
将.jpeg和.JPG文件名重命名为.jpg
rename 's/\.jpe?g$/.jpg/i' *