shell指令碼 批量修改檔名 檔名中新增字元

2021-09-21 09:27:29 字數 3288 閱讀 5414

舉例如下:批量建立10個隨機字串的檔案,要求每個檔名後面新增_aaa,字尾名不變;

[root@localhost goodboy]# ls

adddbbdedf.html  baacjaiija.html  bhcfaabcfh.html  dgjdcdfbca.html  efejadfdji.html

agdhcdeaje.html  bgffbffjcg.html  cbbiebdafh.html  diadebbhag.html  jcajafgejf.html

指令碼1:

1

2

3

4

5

6

7

8

9

[root@localhost ~]# cat 02.sh

#!/bin/bash

#written by mofansheng@2016-02-17

path=/goodboy

[ -d $path ] &&cd$path

forfilein`ls`

do

mv$file`echo$file|sed's/\(.*\)\.\(.*\)/\1_aaa.\2/g'`

done

解釋說明:

使用sed替換,正規表示式第1個()括號裡面代表檔名即\1;中間. 使用\進行脫意,代表分隔符;

第2個括號裡面代表字尾html內容即\2;

使用此方法需要在替換中新增.符號;

更改後的效果如下:1

2

3

4

5

6

7

8

9

10

11

[root@localhost goodboy]# ll

-rw-r--r-- 1 root root 0 2月  17 17:40 adddbbdedf_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 agdhcdeaje_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 baacjaiija_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 bgffbffjcg_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 bhcfaabcfh_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 cbbiebdafh_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 dgjdcdfbca_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 diadebbhag_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 efejadfdji_aaa.html

-rw-r--r-- 1 root root 0 2月  17 17:40 jcajafgejf_aaa.html

指令碼2:

1

2

3

4

5

6

7

8

#!/bin/bash

#written by mofansheng@2016-02-17

path=/goodboy

[ -d $path ] &&cd$path

forfilein`ls`

do

mv$file`echo$file|sed's/\(.*\)\(\..*\)/\1_aaa\2/g'`

done

解釋說明:

同樣使用sed替換,正規表示式,與上面的區別在於第2個括號裡面的內容,代表.html 分隔符和字尾名為一體,替換內容的話不需要再單獨加.點;.分隔符同樣需要使用\進行脫意;

可以使用sed -r引數,看起來就清爽很多,不需要\脫意;

mv $file `echo $file|sed -r 's/

(.*)(\..*)

/\1_aaa\2/g'`

大家有更好的方法,歡迎分享知識~

shell指令碼 批量修改檔名

參考鏈結1 shell指令碼 批量修改檔名 刪除檔名中字元 參考鏈結2 linux shell 字串操作詳解 長度,讀取,替換,擷取,連線,對比,刪除,位置 參考鏈結3 每天乙個linux命令 21 find命令之xargs 參考鏈結5 shell 學習第十天 sed 查詢與替換 批量改名,增加字元...

shell指令碼 批量修改檔名 刪除檔名中字元

舉例如下 批量改名,刪除檔名中多餘字元 目錄下檔名為如下,要求去掉 finished。可以實現的方法有很多種 方法一 for迴圈結合sed替換 baby localhost for file in ls jpg do mv file echo file sed s finished g done 方...

shell 批量修改檔名

當前目錄有n多個 檔案,需要按從小到大排序,然後改名成 1.n.解法如下 整理來自於論壇 方法一 root squid mkdir ls lrs total 24 rw r r 1 root root 7 jun 1 01 19 test1.txt rw r r 1 root root 8 jun ...