[root@localhost luoqi]# ls
luoqi01_find.txt luoqi03_find.txt luoqi05_find.txt luoqi07_find.txt luoqi09_find.txt
luoqi02_find.txt luoqi04_find.txt luoqi06_find.txt luoqi08_find.txt luoqi10_find.txt
目标把以上所有文件名的_find去掉,并且.txt结尾改为.jpg结尾
方法1,sed
[root@localhost luoqi]# ls *.txt | sed -r 's/^(.*)_find.*$/mv & \1.jpg/g'
mv luoqi01_find.txt luoqi01.jpg
mv luoqi02_find.txt luoqi02.jpg
mv luoqi03_find.txt luoqi03.jpg
mv luoqi04_find.txt luoqi04.jpg
mv luoqi05_find.txt luoqi05.jpg
mv luoqi06_find.txt luoqi06.jpg
mv luoqi07_find.txt luoqi07.jpg
mv luoqi08_find.txt luoqi08.jpg
mv luoqi09_find.txt luoqi09.jpg
mv luoqi10_find.txt luoqi10.jpg
最后加一个 | bash
ls *.txt | sed -r 's/^(.*)_find.*$/mv & \1.jpg/g' | bash
此方式的中心思想,把命令列出来
方法2,rename
rename "_find.txt" ".jpg" *
rename "_find.txt" ".jpg" luoqi01* //后面是通配符,可以过滤修改文件名的文件
basename
basename /root/luoqi/luoqi01.jpg
luoqi01.jpg //结果只保留了最后的文件名,前面的路径都干掉了,用于特定脚本
basename /root/luoqi/luoqi01.jpg .jpg
luoqi01 //.jpg也干掉了,另一个用法
dirname
dirname /root/luoqi/luoqi01.jpg
/root/luoqi //作用是只保留目录