需要知识:shell子串功能

准备数据
[root@localhost ~]# mkdir sub_str
[root@localhost ~]# cd sub_str
[root@localhost sub_str]# touch key_{1..5}_file.jpg
[root@localhost sub_str]# touch key_{1..5}_file.png
[root@localhost sub_str]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 Mar 19 07:20 key_1_file.jpg
-rw-r--r--. 1 root root 0 Mar 19 07:21 key_1_file.png
-rw-r--r--. 1 root root 0 Mar 19 07:20 key_2_file.jpg
-rw-r--r--. 1 root root 0 Mar 19 07:21 key_2_file.png
-rw-r--r--. 1 root root 0 Mar 19 07:20 key_3_file.jpg
-rw-r--r--. 1 root root 0 Mar 19 07:21 key_3_file.png
-rw-r--r--. 1 root root 0 Mar 19 07:20 key_4_file.jpg
-rw-r--r--. 1 root root 0 Mar 19 07:21 key_4_file.png
-rw-r--r--. 1 root root 0 Mar 19 07:20 key_5_file.jpg
-rw-r--r--. 1 root root 0 Mar 19 07:21 key_5_file.png
[root@localhost sub_str]#
思路1:使用子串功能单个替换
[root@localhost sub_str]# f=key_1_file.png
[root@localhost sub_str]# echo $f
key_1_file.png
[root@localhost sub_str]# echo ${f//_file} //表示输出f并全局匹配并替换为空
key_1.png
[root@localhost sub_str]#
思路2:利用反引号功能
[root@localhost sub_str]# f=key_1_file.jpg
[root@localhost sub_str]# echo $f
key_1_file.jpg
ocalhost sub_str]# mv $f `echo ${f//_file/}`
进行改名 $f 取得一个文件的名字并替换为空
思路3:如何批量替换
找出所有的JPG和png文件 ls *.jpg *png
找出带file.jpg的文件 ls *file*.jpg
打印所有找出带file.jpg的文件 echo ` ls *file*.jpg`
去掉所有的jpg文件中所有的file字符
[root@localhost sub_str]# for file_name in `ls *fil*.jpg`;do echo $file_name;done
key_2_file.jpg
key_3_file.jpg
key_4_file.jpg
key_5_file.jpg
[root@localhost sub_str]#
[root@localhost sub_str]#
[root@localhost sub_str]#
[root@localhost sub_str]#
[root@localhost sub_str]#
### for循环使用语法
for variable in value1 value2 value3...
do
# 循环体,使用 $variable 引用当前元素
command1
command2
...
done
###例子 打印1-10
#!/bin/bash
for i in {1..10}
do
echo "Number: $i"
done
1445

被折叠的 条评论
为什么被折叠?



