查看/home下所有子目錄的ok.txt并修改成OK.txt
find/home-type f -name "ok.txt" -execrename 'ok.txt' 'OK.txt' {} ;
linux 批量重名名Linux Shell批量重命名的方法總覽
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" "${var%.jpg}_efg.jpg"; done
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
7、把格式 *_?.jpg 的文件改為 *_0?.jpg:
for var in`ls *_?.jpg`; do mv "$var" `echo "$var" |awk -F '_' '{print $1 "_0"$2}'`; done
8、把文件名的前三個字母變?yōu)?vzomik:
for var in`ls`; do mv -f "$var" `echo "$var" |sed 's/^.../vzomik/'`;done
9、把文件名的后四個字母變?yōu)?vzomik:
for var in`ls`; do mv -f "$var" `echo "$var" |sed 's/....$/vzomik/'`;done
linux下批量修改文件名
0、問題來源,想把一部分文件加上日期序。也就是在文件名稱前加上當(dāng)前的年月日進行輸出。
獲取日期格式如下
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$date+%Y%m%d
20091112
1、使用find、awk/grep/sed、mv等命令組--合來實現(xiàn)
Ubuntu下
利用awk命令進行制作,操作如下
1)找到需要進行操作的文件名
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$find-name‘*.jpg’-printf%f//n|grep-v^[0-9]|grep-vlogo.jpg
se_platform.jpg
soa1.jpg
soa4.jpg
java_primitive_data_type.jpg
soa3.jpg
soa2.jpg
2)提取文件名,保持文件擴展名不變
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$find-name‘*.jpg’-printf%f//n|grep-v^[0-9]|grep-vlogo.jpg|awk-F‘.’‘{print$1}’
se_platform
soa1
soa4
java_primitive_data_type
soa3
soa2
3)對文件進行批量替換操作
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$find-name‘*.jpg’-printf%f//n|grep-v^[0-9]|grep-vlogo.jpg|awk-F‘.’‘{print$1}’|
xargs-i{}mv{}.jpg`date+%Y%m%d`{}.jpg
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ls
20090818a.jpg20090919twitter4.jpg
20090818learn.jpg20091110open_project.jpg
20090819java1.png20091112java_primitive_data_type.jpg
20090819javaseplatformroadmap.gif20091112se_platform.jpg
20090916neiji.jpg20091112soa1.jpg
20090916waiji.jpg20091112soa2.jpg
20090919photo.jpg20091112soa3.jpg
20090919twitter.jpg20091112soa4.jpg
20090919twitter2.jpglogo.jpg
20090919twitter3.jpg
利用nawk命令進行制作,操作如下
1)找到要操作的文件名
Zianed@ubuntu:~/sedcommand$find./-typef|grep“l(fā)og”|sed-n’s//.////p’
test2.log
test1.log
2)進行文件名更改操作
Zianed@ubuntu:~/sedcommand$ls*.log
test1.logtest2.log
Zianed@ubuntu:~/sedcommand$find./-typef|grep“l(fā)og”|sed-n’s/.////p’|
nawk‘{oldname=$1;$2=`date+%Y%m%d`$1;newname=$1;print“mv”oldname””newname}’|/bin/sh
nawk:warning:escapesequence`/.’treatedasplain`.’
Zianed@ubuntu:~/sedcommand$ls*.log
test1_test.logtest2_test.log
Zianed@ubuntu:~/sedcommand$
利用sed命令進行制作,操作如下
find/-typef-name“*.sql”|seds//(.*/)/.sql/mv&/1.pls/’|sh
2、編寫Shell腳本運行
保存為一個Shell腳本
#!/bin/bash
#script_name:rename_ALL
find./-typef|grep“txt”|sed-n’s//.////p’|nawk‘{oldname=$1;
sub(//./,”_test/.”);
newname=$1;
print“mv”oldname””newname}’|/bin/sh
將上述代碼保存為文件rename_ALL
修改腳本的屬性,使它能執(zhí)行:chmodu+xrename_ALL
執(zhí)行:./rename_ALL
來自網(wǎng)絡(luò)
看起來很管用,要是能夠進行將要改的文件名格式傳遞進去就更好了。
3、使用rename命令
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$rename–help
Unknownoption:help
Usage:rename[-v][-n][-f]perlexpr[filenames]
manrename發(fā)現(xiàn),
“rename”renamesthefilenamessuppliedaccordingtotherulespecifiedasthefirstargument.
TheperlexprargumentisaPerlexpressionwhichisexpectedtomodifythe$_stringinPerlforatleastsomeofthefilenamesspecified.Ifagivenfilenameisnotmodifiedbytheexpression,itwillnotberenamed.Ifnofilenamesaregivenonthecommandline,filenameswillbereadviastandardinput.
Forexample,torenameallfilesmatching“*.bak”tostriptheextension,youmightsay
rename’s//.bak$//’*.bak
Totranslateuppercasenamestolower,you’duse
rename‘y/A-Z/a-z/’*
命令格式:
rename[-v][-n][-f]perlexpr[files]
perlexpr是一種Perl腳本格式的正則表達式。
files文件名通配符
參數(shù):
-v,–verbose
Verbose:printnamesoffilessuccessfullyrenamed.
詳細模式:打印成功更改的文件名列表
-n,–no-act
NoAction:showwhatfileswouldhavebeenrenamed.
測試模式:并不真正的執(zhí)行命令,而只是顯示哪些文件名應(yīng)該怎么進行更改,用于測試模式。
-f,–force
Force:overwriteexistingfiles.
強制模式:在更改文件名,如果更改后的文件已經(jīng)存在時覆蓋已經(jīng)存在的文件。
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ls
20090819java1.png200909v9twitter4.jpg
20090819javaseplatformroadmap.gif2009vvv0epen_preject.jpg
200908v8lerrn.jpg2009vvv2jrvr_primitive_drtr_type.jpg
200908v8r.jpg2009vvv2se_plrtferm.jpg
200909v6neiji.jpg2009vvv2ser2.jpg
200909v6wriji.jpg2009vvv2ser3.jpg
200909v9phete.jpg2009vvv2ser4.jpg
200909v9twitter.jpg2009vvv2serv.jpg
200909v9twitter2.jpglege.jpg
200909v9twitter3.jpg
將*.jpg文件名中的09v9改為0919
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$rename’s/09v9/0919/’*.jpg
Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ls
20090819java1.png200909v6wriji.jpg
20090819javaseplatformroadmap.gif2009vvv0epen_preject.jpg
200908v8lerrn.jpg2009vvv2jrvr_primitive_drtr_type.jpg
200908v8r.jpg2009vvv2se_plrtferm.jpg
20090919phete.jpg2009vvv2ser2.jpg
20090919twitter.jpg2009vvv2ser3.jpg
20090919twitter2.jpg2009vvv2ser4.jpg
20090919twitter3.jpg2009vvv2serv.jpg
20090919twitter4.jpglege.jpg
200909v6neiji.jpg
rename的典型應(yīng)用:
0.批量更改文件擴展名
$rename’s//.txt//.ext/’*
1.批量刪除文件擴展名
$rename’s//.txt//’*
2.批量添加文件擴展名
$rename’s/$//.txt/’*
3.按自己的方式批量重命名文件
$rename’s/(/d)/第$1章/’*
$renames/_/-/*.jpg#修改所有的包含_的.jpg文件中的_為-
from:http://hi.baidu.com/suping/blog/item/a6d018172eb740164a90a71e.html
愛華網(wǎng)



