有关重命名,sed/rename/basename

[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    //作用是只保留目录

 

posted @ 2019-02-13 15:27  在路上的LQ  阅读(403)  评论(0编辑  收藏  举报