欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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/' *

四、Linux批量重命名文件

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 循环 + 组合命令处理”的思路来实现文件批量重命名滴。

相关标签: ubuntu