日志标签 ‘变量替换’

从修改文件扩展名到子串删除

2012年1月30日

之前在这篇文章中已经列举了一种通用的批量修改文件后缀名的方法,今天看到变量替换${var%pattern},因此又有下面的一种方法:

#!/bin/bash

if [ $# -ne 3 ]
then
	echo "Usage:$(basename $0) old_name new_name dir"
	exit -1
fi

old_name="$1"
new_name="$2"
dir="$3"

for file in $(ls *.$old_name)
do
	newfile=${file%.$old_name}.$new_name
	mv $file $newfile
	echo "$file ===> $newfile"
done

exit 0

该脚本用到了变量替换中的子串删除方法:${var%pattern}。它的作用是从变量$var的末尾删除最小匹配$pattern字符串。与此对应的方法${var%%pattern}则是删除最大匹配$pattern字串。比如:

edsionte@edsionte-laptop:~/mytest$ var=abcd12345abc6789
edsionte@edsionte-laptop:~/mytest$ pattern=b*9
edsionte@edsionte-laptop:~/mytest$ echo "${var%$pattern}"
abcd12345a
edsionte@edsionte-laptop:~/mytest$ echo "${var%%$pattern}"
a

如果想从变量$var开头删除字符串$pattern,则可以使用${var#pattern}删除最小匹配的字符串,而${var##pattern}则可以删除最大匹配$pattern的字符串。比如:

edsionte@edsionte-laptop:~/mytest$ var=abcd12345abc6789
edsionte@edsionte-laptop:~/mytest$ pattern=a*c
edsionte@edsionte-laptop:~/mytest$ echo "${var#$pattern}"
d12345abc6789
edsionte@edsionte-laptop:~/mytest$ echo "${var##$pattern}"
6789

从变量中删除指定字符串是一种常见的操作。

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key