shell 批量重命名

shell 批量重命名

1.把文件名的第一字母批量改成a

方法一:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 8801.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8802.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8803.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8804.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8805.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8806.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8807.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8808.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 8809.txt

[[email protected] test]# for i in `ls`;do mv -f $i `echo $i | sed ‘s/^./a/‘`;done

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 a801.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a802.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a803.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a804.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a805.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a806.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a807.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a808.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a809.txt

方法二:


1

2

3

4

5

for in `ls`

do

    newfile = `echo $i | sed ‘s/^./a/‘`

    mv -f $i $newfile

done

 


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

[[email protected] web30]# ll

total 88

-rw-r--r-- 1 root root  872 Oct 18 19:32 8901www.conf

-rw-r--r-- 1 root root  652 Oct 18 19:32 8902order.conf

-rw-r--r-- 1 root root  846 Oct 18 19:32 8904product.conf

-rw-r--r-- 1 root root  842 Oct 18 19:32 8906topic.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8907user.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8908cart.conf

-rw-r--r-- 1 root root  838 Oct 18 19:32 8909api.conf

-rw-r--r-- 1 root root  879 Oct 18 19:32 8910m.conf

-rw-r--r-- 1 root root  932 Oct 18 19:32 8911search.conf

-rw-r--r-- 1 root root 1233 Oct 18 19:32 8912webapi.conf

-rw-r--r-- 1 root root 1163 Oct 18 19:32 8913tuan.conf

-rw-r--r-- 1 root root  967 Oct 18 19:32 8914upload.conf

-rw-r--r-- 1 root root  923 Oct 18 19:32 8915static.conf

-rw-r--r-- 1 root root  824 Oct 18 19:32 8916temp.conf

-rw-r--r-- 1 root root  830 Oct 18 19:32 8920pay.conf

-rw-r--r-- 1 root root  841 Oct 18 19:32 8922passport.conf

-rw-r--r-- 1 root root  875 Oct 18 19:32 8924mapi.conf

-rw-r--r-- 1 root root  833 Oct 18 19:32 8932lqrcodeserver.conf

-rw-r--r-- 1 root root  839 Oct 18 19:32 8933ystorage.conf

-rw-r--r-- 1 root root  825 Oct 18 19:32 8934larea.conf

-rw-r--r-- 1 root root  841 Oct 18 19:32 8935lcaptchaserver.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8936supply.conf

# 文件的第二个名批量改成87

[[email protected] web30]# for i in `ls`;do mv -f $i `echo $i | sed ‘s/^8./87/‘`;done

[[email protected] web30]# ll

total 88

-rw-r--r-- 1 root root  872 Oct 18 19:32 8701www.conf

-rw-r--r-- 1 root root  652 Oct 18 19:32 8702order.conf

-rw-r--r-- 1 root root  846 Oct 18 19:32 8704product.conf

-rw-r--r-- 1 root root  842 Oct 18 19:32 8706topic.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8707user.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8708cart.conf

-rw-r--r-- 1 root root  838 Oct 18 19:32 8709api.conf

-rw-r--r-- 1 root root  879 Oct 18 19:32 8710m.conf

-rw-r--r-- 1 root root  932 Oct 18 19:32 8711search.conf

-rw-r--r-- 1 root root 1233 Oct 18 19:32 8712webapi.conf

-rw-r--r-- 1 root root 1163 Oct 18 19:32 8713tuan.conf

-rw-r--r-- 1 root root  967 Oct 18 19:32 8714upload.conf

-rw-r--r-- 1 root root  923 Oct 18 19:32 8715static.conf

-rw-r--r-- 1 root root  824 Oct 18 19:32 8716temp.conf

-rw-r--r-- 1 root root  830 Oct 18 19:32 8720pay.conf

-rw-r--r-- 1 root root  841 Oct 18 19:32 8722passport.conf

-rw-r--r-- 1 root root  875 Oct 18 19:32 8724mapi.conf

-rw-r--r-- 1 root root  833 Oct 18 19:32 8732lqrcodeserver.conf

-rw-r--r-- 1 root root  839 Oct 18 19:32 8733ystorage.conf

-rw-r--r-- 1 root root  825 Oct 18 19:32 8734larea.conf

-rw-r--r-- 1 root root  841 Oct 18 19:32 8735lcaptchaserver.conf

-rw-r--r-- 1 root root  840 Oct 18 19:32 8736supply.conf

2.文件的前3个字符改成BBB


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 a801.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a802.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a803.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a804.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a805.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a806.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a807.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a808.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 a809.txt

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB1.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB2.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB3.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB4.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB5.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB6.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB7.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB8.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB9.txt

 3.文件前面批量加个字符abc


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB1.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB2.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB3.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB4.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB5.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB6.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB7.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB8.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 BBB9.txt

[[email protected] test]# for i in `ls`;do mv -f $i `echo abc_$i`;done

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB1.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB2.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB3.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB4.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB5.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB6.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB7.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB8.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB9.txt

 4.文件名所有小写字变成大写


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB1.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB2.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB3.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB4.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB5.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB6.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB7.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB8.txt

-rw-r--r-- 1 root root 0 Apr 14 15:02 abc_BBB9.txt

[[email protected] test]# for i in `ls`;do mv -f $i `echo $i | tr ‘a-z‘ ‘A-Z‘`;done

[[email protected] test]# ll

total 0

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB1.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB2.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB3.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB4.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB5.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB6.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB7.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB8.TXT

-rw-r--r-- 1 root root 0 Apr 14 15:02 ABC_BBB9.TXT


原文链接https://www.cnblogs.com/pangblog/p/3243931.html

1、删除所有的 .bak 后缀:

rename ‘s/\.bak$//‘ *.bak

注意,这个命令的格式组织如下:s/   \.bark$   / / 是s/para1/para2/ 这个有点想sed的语法,将para1匹配的字符串换成para2

2、把 .jpe 文件后缀修改为 .jpg:

rename ‘s/\.jpe$/\.jpg/‘ *.jpe

3、把所有文件的文件名改为小写:

rename ‘y/A-Z/a-z/‘ *

4、将 abcd.jpg 重命名为 abcd_efg.jpg:

for var in *.jpg; do mv "$var" "${var%.jpg}_efg.jpg"; done

其中,此处涉及到shell的字符串匹配操作:

1> ${variable#pattern}
如果pattern匹配variable的开始部分,从variable的开始处删除字符直到第一个匹配的位置,包括匹配部分,返回剩余部分。

2> ${variable##pattern}
如果pattern匹配variable的开始部分,从variable的开始处删除字符直到最后一个匹配的位置,包括匹配部分,返回剩余部分。

3> ${variable%pattern}
如果pattern匹配variable的结尾部分,从variable的结尾处删除字符直到第一个匹配的位置,包括匹配部分,返回剩余部分。

4> ${variable%%pattern}
如果pattern匹配variable的结尾部分,从variable的结尾处删除字符直到最后一个匹配的位置,包括匹配部分,返回剩余部分。

5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg:

for var in *.jpg; do mv "$var" "${var%_efg.jpg}_lmn.jpg"; done

6、把文件名中所有小写字母改为大写字母:

for var in `ls`; do mv -f "$var" `echo "$var" |tr a-z A-Z`; done

tr:traslate or delete characters

7、把格式 *_?.jpg 的文件改为 *_0?.jpg:

for var in `ls *_?.jpg`; do mv "$var" `echo "$var" |awk -F ‘_‘ ‘{print $1 "_0" $2}‘`; done

8、把文件名的前三个字母变为 vzomik:

for var in `ls`; do mv -f "$var" `echo "$var" |sed ‘s/^.../vzomik/‘`; done

9、把文件名的后四个字母变为 vzomik:

for var in `ls`; do mv -f "$var" `echo "$var" |sed ‘s/....$/vzomik/‘`; done

参考:

原文地址:https://www.cnblogs.com/wal1317-59/p/12079592.html

时间: 2024-11-10 09:51:55

shell 批量重命名的相关文章

Mac / Linux Shell 批量重命名的方法总览

Linux Shell 批量重命名的方法总览 0.用类似 GPRename 这样的图形软件进行批量重命名 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 2.把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/' *.jpe 3.把所有文件的文件名改为小写: rename 'y/A-Z/a-z/' * 4.将 abcd.jpg 重命名为 abcd_efg.jpg: for var in *.jpg; do mv "$var

linux下的文件操作——批量重命名

概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等.文本主要为你讲解如何实现这些操作 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 注意,这个命令的格式组织如下:s/   \.bark$   / / 是s/para1/para2/ 这个有点想sed的语法,将para1匹配的字符串换成para2 2.把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/'

批量重命名

# -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #批量重命名文件 import os #抓取py当前目录 path=os.getcwd() for file in os.listdir(path): #使用os.listdir()函数获得指定目录中的内容 if 'apk' in file: if "a_signed_zipalign" in file:#多了一层逻辑,暂时先不管 RenameFile=file.replace("a_s

linux下rename用法--批量重命名

Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了, 由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C版本的都被Perl改写了,因为 Perl版本的支持正则处理,所以功能更加强大,已经不再需要C语言版本的了.   1.如何区分系统里的rename命令是哪个版本的?   输入man rename 看到第一行是 RENA

使用java对文件批量重命名

有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如果上千个呢?改到手抽筋都改不完啊!闲来没事写了个小程序,用来对这样统一格式的文件进行批量重命名,当然,必须是这种统一格式的命名方式,如上图所显示的那样,废话不多说,直接贴代码,简单易懂,无甚可将! public class CHBRenamer { public static void main(S

TotalCommander使用方法,如何对图片批量重命名

1 文件或文件夹重命名 F2 2 计算所有文件夹的大小 A/t+Shift+Enter.(这样对于文件的更新操作就更加快捷有效了,比如我的文档里面只有若干个子文件夹有更新,则别的都不用动,只要修改那些大小不一致的文件夹即可) 在此之前可能需要先显示隐藏的文件和文件夹 3 查看某一个文件或文件夹的属性 A/t+Enter(比右击然后选择属性方便多了) . 4 筛选文件(比如我想要显示所有图像文件夹里面的去年过年的时候的图片)这个在Windows里面就可以做到,在搜索框中选定时间即可. 5 如果想要

Fedora25批量重命名——rename巧用

大家可能会遇到这样的类似情况,请看图: 大量文件名,重复含有相同的字符,而且并没什么用,想批量修改文件名的话,如果一个一个修改很浪费时间精力.今天就和大家分享一个fedora中简单批量重命名的方法--rename命令: 先确定需要重命名的文件所在路径: 再确定这一批文件名中哪些重复的字符需要替换,需要替换成什么字符: 打开终端,cd到需要重命名文件的目录 执行: $rename 被替换的字符 替换成的字符 文件类型范围 例如:我将图片所示目录中的所有.mp4文件名中"少男"替换成&qu

五种方法实现Linux批量重命名文件

五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. AD: Linux批量重命名文件会涉及到改变一个字母.改变一些相连字母.改变某些位置的字母.在最前面加上某些字母.或者改变字母的大小写.完成这里五个方法基本上就会解决了Linux批量重命名的工作. 1.我想把它们的名字的第一个1个字母变为"q",其它的不变 [[email protected] mailqueue]# for i in

通过DOS命令批量重命名文件

以下为提供的两种方法:遍历当前目录下的所有文件名以.avi结尾的文件,然后权限规则进行修改(规则含义请自行查找资料).第一种方法有缺陷,更改完所有的文件名后,会多改一次.请斟酌使用.第二种方法解决了第一个方法的不足. 方法一: 1 @echo off   2 setlocal enabledelayedexpansion   3    4 for /f "delims="  %%a in ('dir /a-d /s /b *.avi') do (   5     echo "