Linux下批量修改⽂件名-⼤⼩写切换-全部改为⼤写全部改为⼩写
要求:
⼏千个⽂件名类似于: car_VIT.mat 、 socker_stk.mat
需要全部改成 ⼩写字母_⼤写字母.mat 的格式。
以及, ⾸字母⼤写,其他字符不变。
全部改为⼩写
sudo rename 'y/A-Z/a-z/' *
全部改为⼤写
sudo rename 'y/a-z/A-Z/' *
今天试试上⾯的⽅法:
将当前⽬录下所有*.nc⽂件中Sam3替换成Stm32,命令如下:
陈羽凡前女友
rename -n 's/Sam3/Stm32/' *.nc  /*确认需要重命名的⽂件*/
rename -v 's/Sam3/Stm32/' *.nc  /*执⾏修改,并列出已重命名的⽂件*/
Perl正则表达式:
匹配:m/<regexp>/  (可以省略m,直接写成/regexp/)
替换:s/<pattern>/<replacement>/
转化:tr/<pattern>/<replacement>/ 
rename命令常⽤到替换和转化两种(⽤匹配也没意义)。转换跟替换不同,替换是将replacement整个字符串替换pattern字符串,⽽转换则是⽤replacement逐个字符替换pattern逐个字符,结果依赖于replacement与pattern字符个数(见下述分析)。
(所以我想要部分改变⼤⼩写,可以使⽤,转化命令)
sudo rename 'tr/[a-z][^a-zA-Z0-9][a-z]/[a-z][^a-zA-Z0-9][A-Z]/' *.mat
没有顺序匹配之分!不可⾏
解决办法: 把部分⼩写替换成⼤写。。
rename -v 's/_bsbt/_BSBT/' *.mat
部分改为⼤⼩写: 模仿各种命令,试了试以下⼏种命令,均不⾏, 计划尝试python 的⽅法。
sudo rename [a-z]_[a-z].mat to [a-z]_[A-Z].mat
不可⾏
sudo rename {/a-z/_/a-z/}.mat to {/a-z/_/A-Z/}.mat
不可⾏
rename -v 's/[a-z]_[a-z]\.mat$/[a-z]_[A-Z]\.mat/' *.mat记得 歌词
不可⾏
rename -v 's/×_×\.mat$/[a-z]_[A-Z]\.mat/' *.mat
不可⾏
去掉_ 后⾯的内容
for name in `ls *.mat`;do mv $name ${name%_*}.mat;done
修改_ 后⾯的为⼤写有什么好看的电视
for name in `ls *.mat`;do mv $name ${name_[A-Z]}.mat;done张家口景点
不可⾏,⽂件全没了
修改_ 后⾯的为⼤写
for name in `ls *.mat`;do mv $name%_* ${name_[A-Z]}.mat;done
舒淇资料不可⾏
将.jpeg ⽂件改成 *.jpg
$ rename 's/\.jpeg$/\.jpg/' *.jpeg
学习实践科学发展观活动
将‘imgNNNN.jpeg’变成‘danNNNN.jpg’
# rename -v 's/img_(\d{4})\.jpeg$/dan_$1\.jpg/' *.jpeg
img_5418.jpeg renamed as dan_5418.jpg
img_5419.jpeg renamed as dan_5419.jpg
img_5420.jpeg renamed as dan_5420.jpg
img_5421.jpeg renamed as dan_5421.jpg
将‘img_000NNNN.jpeg’变成‘dan_NNNN.jpg’
# rename -v 's/img_\d{3}(\d{4})\.jpeg$/dan_$1\.jpg/' *jpeg
img_0005417.jpeg renamed as dan_5417.jpg
img_0005418.jpeg renamed as dan_5418.jpg
img_0005419.jpeg renamed as dan_5419.jpg
img_0005420.jpeg renamed as dan_5420.jpg
img_0005421.jpeg renamed as dan_5421.jpg
上⾯的例⼦中,⼦模式‘\d{4}’会捕捉4个连续的数字,捕捉的四个数字就是$1, 将会⽤于新的⽂件名。