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
其中,此處涉及到shell的字符串匹配操作:
1){variable#pattern}如果pattern匹配variable的開始部分,從variable的開始處刪除字符直到第一個(gè)匹配的位置,包括匹配部分,返回剩余部分。
2){variable##pattern}如果pattern匹配variable的開始部分,從variable的開始處刪除字符直到最后一個(gè)匹配的位置,包括匹配部分,返回剩余部分。
3){variable%pattern}如果pattern匹配variable的結(jié)尾部分,從variable的結(jié)尾處刪除字符直到第一個(gè)匹配的位置,包括匹配部分,返回剩余部分。
4){variable%%pattern}
如果pattern匹配variable的結(jié)尾部分,從variable的結(jié)尾處刪除字符直到最后一個(gè)匹配的位置,包括匹配部分,返回剩余部分。
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、把文件名的前三個(gè)字母變?yōu)?vzomik:
for var in `ls`; do mv -f "$var" `echo "$var" |sed 's/^.../vzomik/'`; done
9、把文件名的后四個(gè)字母變?yōu)?vzomik:
for var in `ls`; do mv -f "$var" `echo "$var" |sed 's/....$/vzomik/'`; done
10. 把.txt變成.txt_bak 的后綴
ls *.txt|xargs -n1 -i{} mv {} {}_bak
xargs -n1 –i{}類似for循環(huán),-n1意思是一個(gè)一個(gè)對(duì)象的去處理,-i{}把前面的對(duì)象使用{}取代,mv {} {}_bak相當(dāng)于mv 1.txt 1.txt_bak
find ./*.txt -exec mv {} {}_bak ;
這個(gè)命令中也是把{}作為前面find出來的文件的替代符,后面的””為”;”的脫意符,不然shell會(huì)把分號(hào)作為該行命令的結(jié)尾.
---------------------------------
#!/bin/bash
home=/home/aiverf/history/spark/log/dynamic
for var1 in `ls ${home}`; 
do 
    cd ${home}/${var1}
    for var in `ls ${home}/${var1}`; do mv "$var" `echo "$var" |awk -F '.' '{print $1 "." $3}'`; done
done
                            總結(jié)
以上是生活随笔為你收集整理的Linux Shell 批量重命名的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: SpaceVim 语言模块 python
- 下一篇: 最优二叉树(赫夫曼树、赫夫曼树和赫夫曼编
