Linux下批量修改文件名

Linux下批量修改文件名,第1张

Linux下修改文件名有mv和rename。 其中mv命令只能对单个文件重命名 这是mv命令和rename命令的在重命名方面的根本区别。

linux的rename命令有两个版本,一个是c语言版本的,一个是perl语言版本的,判断方法:

输入man rename 看到第一行是:

RENAME(1) Linux Programmer’s Manual RENAME(1)

这个就是C语言版本的

而如果出现:

RENAME(1) Perl Programmers Reference Guide RENAME(1) 则是Perl版本的了

C语言版本格式:rename 原字符串 新字符串 文件名

Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名

rename支持正则表达式

例子:

字母的替换 rename "s/AA/aa/" * // 把文件名中的AA替换成aa

修改文件的后缀 rename "s//.html//.php/" * // 把.html 后缀的改成 .php后缀

批量添加文件后缀 rename "s/$//.txt/" * // 把所有的文件名都以txt结尾

批量删除文件名 rename "s//.txt//" * // 把所有以.txt结尾的文件名的.txt删掉

在文件夹shell下创建文件10个文件

touch tmp_{1..10}.txt

找到含有“_“”的文件夹。

find ./ -name "*_*"

读取id, 用mv改名,$为自己理解为赋值后的id,格式为

比如修改一下目录下的所有文件的后缀

ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak

[root@ test]# touch a b c

[root@ test]# ls -l

total 0

-rw-r--r-- 1 root root 0 Apr 27 21:50 a

-rw-r--r-- 1 root root 0 Apr 27 21:50 b

-rw-r--r-- 1 root root 0 Apr 27 21:50 c

[root@ test]# ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak

[root@ test]# ls -l

total 0

-rw-r--r-- 1 root root 0 Apr 27 21:50 a.bak

-rw-r--r-- 1 root root 0 Apr 27 21:50 b.bak

-rw-r--r-- 1 root root 0 Apr 27 21:50 c.bak

在shell下进入你文件所在的目录,输入

for file in *.*do newname=`echo $file | tr "[A-z]" "[a-z]"`mv -f $file $newname 2>/dev/nulldone


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7095298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存