批量重命名,提取文件名、文件后缀名

1、提取文件后缀名使用#、##
1
2
3
4
5
6
7
8
9
count=1;
for  name in `find . -type f -iname  "*" `
do
         new =image-$count.${name##*.}  //提取后缀名
     
         mv $name $ new
  
         let count++
done

上面的${var##*.}表示去掉var变量的*.部分(也就是提取后缀名)两个##表示选择最短的,一个#则表示最长的。

比如一个#
1
2
3
4
5
6
7
var=a.b.c.d
 
//使用#操作符
$echo ${var#*.}
 
//得到输出
b.c.d
而两个#
1
2
3
4
5
6
7
var=a.b.c.d
 
//使用##操作符
$echo ${var##*.}
 
//得到输出
d


2、提取文件名使用%、%%
1
2
3
4
5
6
7
8
9
count=1;
for  name in `find . -type f -iname  "*" `
do
         new =image-$count.${name%%.*}  //提取文件名
     
         mv $name $ new
  
         let count++
done

上面的${var%%.*}表示去掉var变量的.*部分(也就是提取文件名)两%%表示选择最短的,一个%则表示最长的

比如一个%
1
2
3
4
5
6
7
var=a.b.c.d
 
//使用#操作符
$echo ${var%.*}
 
//得到输出
a.b.c

而两个%%

1
2
3
4
5
6
7
var=a.b.c.d
 
//使用%%操作符
$echo ${var%%.*}
 
//得到输出
a

你可能感兴趣的:(linux,shell)