学习笔记--linux之shell脚本批量修改文件名

需要知识: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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值