• 一、${}
  • 1.1、提取文件名
  • 1.2、提取扩展名
  • 1.3、${VAR%.*}
  • 1.3.1非贪婪模式
  • 1.3.2、贪婪模式
  • 1.4、${VAR#*.}
  • 1.4.1、非贪婪模式
  • 1.4.2、贪婪模式
  • 1.5、提取域名不同部分
  • 二、rename
  • 2.1、利用rename脚本批量重命名
  • 2.2、rename批量重命名


一、${}

1.1、提取文件名

file_jpg='sample.jpg'
  name=${file_jpg%.*}
 echo File name is:$name

Linux脚本攻略学习笔记之${}以及rename实例演示_重命名

1.2、提取扩展名

extension=${file_jpg#*.}
echo Extension is :$extension

Linux脚本攻略学习笔记之${}以及rename实例演示_${}实例演示_02

1.3、${VAR%.*}

${VAR%.*} 的含义如下所述:
 从 $VAR 中删除位于 % 右侧的通配符(在前例中是. * )所匹配的字符串。通配符从右向左
进行匹配。
 给 VAR 赋值, VAR=sample.jpg 。那么,通配符从右向左就会匹配到.jpg,因此,从 $VAR
中删除匹配结果,就会得到输出 sample

% 属于非贪婪(non-greedy)操作。它从右到左找出匹配通配符的最短结果。还有另一个操作
符 %% ,这个操作符与 % 相似,但行为模式却是贪婪的,这意味着它会匹配符合条件的最长的字符串

1.3.1非贪婪模式

Linux脚本攻略学习笔记之${}以及rename实例演示_rename批量重命名_03

1.3.2、贪婪模式

Linux脚本攻略学习笔记之${}以及rename实例演示_文件名_04


操作符 %% 则用 .* 从右向左执行贪婪匹配( .fun.book.txt )

1.4、${VAR#*.}

${VAR#*.} 的含义如下所述:
从 $VAR 中删除位于 # 右侧的通配符(即在前例中使用的 *. )所匹配的字符串。通配
符从左向右进行匹配。
和 %% 类似, # 也有一个相对应的贪婪操作符 ## 。
##从左向右进行贪婪匹配,并从指定变量中删除匹配结果

1.4.1、非贪婪模式

var=hack.fun.book.txt
echo ${var#*.}

Linux脚本攻略学习笔记之${}以及rename实例演示_重命名_05

1.4.2、贪婪模式

echo ${var##*.}

Linux脚本攻略学习笔记之${}以及rename实例演示_rename批量重命名_06


操作符 ## 则用 *. 从左向右执行贪婪匹配( txt )

1.5、提取域名不同部分

URL=www.oracle.com
echo ${URL%.*}
echo ${URL%%.*}
echo ${URL#*.}
echo ${URL##*.}

Linux脚本攻略学习笔记之${}以及rename实例演示_${}实例演示_07

二、rename

rename 命令利用Perl正则表达式修改文件名。综合运用 find 、 rename 和 mv ,我们能够做到很多。

2.1、利用rename脚本批量重命名

Linux脚本攻略学习笔记之${}以及rename实例演示_Linux脚本攻略学习笔记_08


把以上图片格式名字改为image-1格式

#!/bin/bash
#文件名:rename.sh
#用途:重命名.jpg或 .png
count=1

for img in `find .  -iname '*.jpg' -o  -iname '*.png' -type f -maxdepth 1`
 do new=image-$count.${img##*.}
  echo  "Renaming $img to $new"
mv    "$img" "$new" #重命名
let  count++

done

结果如下

Linux脚本攻略学习笔记之${}以及rename实例演示_Linux脚本攻略学习笔记_09

2.2、rename批量重命名

rename *.jpg *.JPG
把所有jpg格式的改为JPG