ubuntu下批量删除后缀或者添加后缀-20201110
程序员文章站
2024-03-22 08:53:46
...
学习了几种Linux下批量改名的方法,做此记录
一、Linux 下批量去后缀加后缀
1.删除所有的 .xml 后缀:
rename 's/\.xml$//' *.xml
PS:这里rename如果没有安装需要sudo apt install rename进行安装。这里s表示替换,在本文提及的第三部分也有说明。s后接/a/b/表示b替换a,具体到这里是空白替换.xmlKaTeX parse error: Can't use function '\'' in math mode at position 5: (这里'\̲'̲表示转义,表示结尾)。
2.给当前目录下所有文件加后缀 .xml 。
for i in * # 如果是子文件,则如test/*
do mv $i $i".xml"
done
二、Linux批量更改文件后缀名
此文提到的第一种方法有错,注意自行验证
#!/bin/bash
find ./ -name *.c | while read i
do
echo "$i";
mv $i.c $i.h
done
三、批量重命名文件
用法:rename perl表达式 文件名
perl表达式用于修改文件名,如s开头的串表示替换。
举几个比较实用的例子:
# 删除所有的.bak后缀:
rename 's/\.bak$//' *.bak
# 把.jpe文件后缀修改为.jpg:
rename 's/\.jpe$/\.jpg/' *.jpe
# 把文件名改为小写:
rename 'y/A-Z/a-z/' *
1、我想把它们的名字的第一个1个字母变为"q",其它的不变
[[email protected] mailqueue]# for i in `ls`; do mv -f $i `echo $i | sed 's/^./q/'`; done
----------------------------------------
或者写个脚本,显得更加清晰:
for file in `ls`
do
newfile =`echo $i | sed 's/^./q/'`
mv $file $newfile
done
----------------------------------------
2、修改前面5个字母为zhaozh
[[email protected] mailqueue]# for i in `ls`; do mv -f $i `echo $i | sed 's/^...../zhaozh/'`; done
3、修改后面5个字母为snail
[[email protected] mailqueue]# for i in `ls`; do mv -f $i `echo $i | sed 's/.....$/snail/'`; done
4、在前面添加 _hoho_
[[email protected] mailqueue]# for i in `ls`; do mv -f $i `echo "_hoho_"$i`; done
5、所有的小写字母变大写字母
[[email protected] mailqueue]# for i in `ls`; do mv -f $i `echo $i | tr a-z A-Z`; done
说到底就是用“for 循环 + 组合命令处理”的思路来实现文件批量重命名滴。