• shell-批量修改文件名及扩展名多案例


    1. 功能描述如下表:

      批量文件改名案例实战:
      问题1:
      创建测试数据

    [root@1-241 tmp]# for i in `seq 6`;do touch stu_161226_${i}_finished.jpg;done 
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_1_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_2_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_3_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_4_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_5_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_6_finished.jpg

      开始修改

    [root@1-241 tmp]# for i in `ls *.jpg`;do mv "$i" "${i%finished*}.jpg"; done
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_1_.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_2_.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_3_.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_4_.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_5_.jpg
    

    2. 功能描述

       问题2:把下面文件的jpg变成html扩展名:
       创建测试数据

    [root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg 
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg

       开始修改

    [root@1-241 tmp]# for i in `ls *.jpg`; do mv $i ${i/%jpg/html}; done 
    
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.html
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.html
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.html
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.html
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.html
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.html

    3. 小结:

    mv $i ${i%.jpg}.html
    mv $i `echo $i |sed 's/jpg/html/g'`
    mv $i `echo "${i/%jpg/html}"`
    

    4. 利用awk处理

    [root@1-241 tmp]# ls *.jpg
    stu_161226_1_finished.jpg stu_161226_3_finished.jpg stu_161226_5_finished.jpg
    stu_161226_2_finished.jpg stu_161226_4_finished.jpg stu_161226_6_finished.jpg
    [root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0}' stu_161226_1_finished.jpg stu_161226_2_finished.jpg stu_161226_3_finished.jpg stu_161226_4_finished.jpg stu_161226_5_finished.jpg stu_161226_6_finished.jpg
    [root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1 }' stu_161226_1_finished.jpg stu_161226_1_ stu_161226_2_finished.jpg stu_161226_2_ stu_161226_3_finished.jpg stu_161226_3_ stu_161226_4_finished.jpg stu_161226_4_ stu_161226_5_finished.jpg stu_161226_5_ stu_161226_6_finished.jpg stu_161226_6_
    [root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1$2 }' stu_161226_1_finished.jpg stu_161226_1_.jpg stu_161226_2_finished.jpg stu_161226_2_.jpg stu_161226_3_finished.jpg stu_161226_3_.jpg stu_161226_4_finished.jpg stu_161226_4_.jpg stu_161226_5_finished.jpg stu_161226_5_.jpg stu_161226_6_finished.jpg stu_161226_6_.jpg
    [root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}' mv stu_161226_1_finished.jpg stu_161226_1_.jpg mv stu_161226_2_finished.jpg stu_161226_2_.jpg mv stu_161226_3_finished.jpg stu_161226_3_.jpg mv stu_161226_4_finished.jpg stu_161226_4_.jpg mv stu_161226_5_finished.jpg stu_161226_5_.jpg mv stu_161226_6_finished.jpg stu_161226_6_.jpg
    [root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}' |bash [root@1-241 tmp]# ll 总用量 0 -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_.jpg -rw-r--r--. 1 rootrm root 0 12月 23 16:53 stu_161226_6_.jpg

    5. 利用rename更改

    [root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg 
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
    -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg
    [root@1-241 tmp]# rename "finished" "" *.jpg
    [root@1-241 tmp]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_1_.jpg
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_2_.jpg
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_3_.jpg
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_4_.jpg
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_5_.jpg
    -rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_6_.jpg

    6:拓展:其他变量的替换
    变量替换表:

     

    7. 下面依次举例说明:
    1、${value:-word} 当变量未定义或者值为空时,返回值为word内容,否则返回变量的值
    举例:

    [root@1-241 ~]# aa=${bb:-word}
    [root@1-241 ~]# echo $bb
    ==>这里是空
    [root@1-241 ~]# echo $aa
    word
    

    8. ${value:=word}

    与前者类似,只是若变量未定义或者值为空时,在返回word的值得同时将word赋值给value

    [root@1-241 ~]# aa=${bb:=word}
    [root@1-241 ~]# echo $bb
    word
    [root@1-241 ~]# echo $aa
    word
    

      

     
  • 相关阅读:
    [Oracle11g]安装提示不能使用/usr/bin/xdpyinfo命令
    [shell]时间判断
    Share 简易网盘
    VSCODE代码上下对齐插件 — Better Align
    关于 vscode intelephense 错误提示的问题
    2021/11/08 集训补题
    [国家集训队]墨墨的等式
    马大师的分块练习
    20211109 集训补题
    弱智的 线性代数 学习笔记
  • 原文地址:https://www.cnblogs.com/scajy/p/12762464.html
Copyright © 2020-2023  润新知