|
${#string} 返回字符串string的长度
${string:position} 在string中截取position开始往后的字符串(字符串从0开始计)
${string:position:length} 从position开始往后截取length长度的字符串
${string#substring} 从开头开始删除最短匹配的substring
${string##substring} 从开头开始删除最长匹配的substring
${string%substring} 从结尾向前删除最短匹配的substring
${string%%substring} 从结尾向前上传最长匹配的substring
${string/substring/replace} 字符串replace替代第一个匹配的substring
${string/#substring/replace} replace代替string开始位置的substring
${string/%substring/replace} replace代替string结尾位置的substring
例:
[iyunv@t6 test2]# echo $string
abcdefg
[iyunv@t6 test2]# echo ${#string}
7
[iyunv@t6 test2]# echo ${string:2}
cdefg
[iyunv@t6 test2]# echo ${string:2:3}
cde
[iyunv@t6 test2]# string="abcdefabcdef"
[iyunv@t6 test2]# echo $string
abcdefabcdef
[iyunv@t6 test2]# echo ${string#*ab}
cdefabcdef
[iyunv@t6 test2]# echo ${string##*ab}
cdef
[iyunv@t6 test2]# echo $string
abcdefabcdef
[iyunv@t6 test2]# echo ${string%ab*}
abcdef
[iyunv@t6 test2]# echo ${string%cd*}
abcdefab
[iyunv@t6 test2]# echo ${string%%cd*}
ab
[iyunv@t6 test2]# echo $string
abcdefabcdef
[iyunv@t6 test2]# echo ${string/ab/xy}
xycdefabcdef
[iyunv@t6 test2]# echo ${string/cd/xy}
abxyefabcdef
[iyunv@t6 test2]# echo ${string/#cd/xy}
abcdefabcdef
[iyunv@t6 test2]# echo $string
abcdefabcdef
[iyunv@t6 test2]# echo ${string/#cd/xy}
abcdefabcdef
[iyunv@t6 test2]# echo ${string/ef/xy}
abcdxyabcdef
[iyunv@t6 test2]# echo ${string/%ef/xy}
abcdefabcdxy
批量重命名
将文件名为stu_1_finished.jpg stu_2_finished.jpg...重命名为stu_1_.jpg,stu_2_.jpg...可用touch创建需要操作的文件:touch stu_{1..10}_finished.jpg
1)
#!/bin/bash
for i in `ls *.jpg`
do
mv $i `echo ${i%finished*}.jpg`
done
2)ls *.jpg|awk -F 'finished' '{print mv" "$0" "$1$2}'|bash
[iyunv@t6 test2]# ls
rename.sh stu_2_finished.jpg stu_5_finished.jpg stu_8_finished.jpg
stu_10_finished.jpg stu_3_finished.jpg stu_6_finished.jpg stu_9_finished.jpg
stu_1_finished.jpg stu_4_finished.jpg stu_7_finished.jpg
[iyunv@t6 test2]# ls *.jpg|awk -F 'finished' '{print "mv"" "$0" "$1$2}'|bash
[iyunv@t6 test2]# ls
rename.sh stu_1_.jpg stu_3_.jpg stu_5_.jpg stu_7_.jpg stu_9_.jpg
stu_10_.jpg stu_2_.jpg stu_4_.jpg stu_6_.jpg stu_8_.jpg
将以上修改文件名后的文件的stu改为大写STU
#!/bin/bash
for i in `ls *.jpg`
do
mv $i "`echo ${i%.jpg}|tr a-z A-Z`.jpg"
done
提示:以上重命名操作均可用rename命令完成.
rename foo foo1 foo*
|
|
|
|
|
|
|