zpjx 发表于 2018-8-28 11:36:46

shell 批量文件改名

  # cat mv.sh
  #!/bin/bash
  for file in `ls *.jpg`
  do
  /bin/mv $file `echo "${file%finished*}.jpg"`
  done
  # ll
  total 8
  -rw-r--r-- 1 root root 106 Dec 26 05:33 a.log
  -rw-r--r-- 1 root root90 Dec 26 05:39 mv.sh
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_1_finished.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_2_finished.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_3_finished.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_4_finished.jpg
  # sh mv.sh
  # ll
  total 8
  -rw-r--r-- 1 root root 106 Dec 26 05:33 a.log
  -rw-r--r-- 1 root root90 Dec 26 05:39 mv.sh
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_1_.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_2_.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_3_.jpg
  -rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_4_.jpg
  思路:
  # k="stu_102999_1_finished.jpg"
  # echo ${k%finished*}.jpg
  stu_102999_1_.jpg
  2、用${string/%substring/replace} 修改扩展名
  # ls
  1.log1.shcamz.HTMLicpc.HTMLleco.HTMLwjb.HTMLzshu.HTML
  将后缀为HTML改为TH
  # vim 1.sh
  #!/bin/bash
  for f in `ls *.HTML`
  do
  mv $f `echo ${f/%HTML/TH}`
  done
  # sh -x 1.sh
  ++ ls camz.HTML icpc.HTML leco.HTML wjb.HTML zshu.HTML
  + for f in '`ls *.HTML`'
  ++ echo camz.TH
  + mv camz.HTML camz.TH
  + for f in '`ls *.HTML`'
  ++ echo icpc.TH
  + mv icpc.HTML icpc.TH
  + for f in '`ls *.HTML`'
  ++ echo leco.TH
  + mv leco.HTML leco.TH
  + for f in '`ls *.HTML`'
  ++ echo wjb.TH
  + mv wjb.HTML wjb.TH
  + for f in '`ls *.HTML`'
  ++ echo zshu.TH
  + mv zshu.HTML zshu.TH
  # ls
  1.log1.shcamz.THicpc.THleco.THwjb.THzshu.TH

页: [1]
查看完整版本: shell 批量文件改名