linux 批量修改文件名中间,Linux中批量修改文件名

Linux中批量修改文件名

有时候我们有一个目录下面的文件名都需要重新命令

如: 以下有十个学生完成的脚本,现在需要将finish改为ing

[root@slave test]# touch student_{01..10}_finish.sh

[root@slave test]# ls student_*

student_01_finish.sh  student_03_finish.sh  student_05_f

student_02_finish.sh  student_04_finish.sh  student_06_finish.sh  student_08_finish.sh  student_10_finish.sh

方法1: sed

for f in `ls student_*` ; do echo $f | mv $f `sed 's#finish#ing#g'`;done

方法2: awk 字符串拼接的方法(在传递给bash)

测试:

[root@slave test]# echo student_05_finish.sh | awk -F 'finish' '{ print "mv " $0 " " $1 "ing"$2}'

mv student_05_finish.sh student_05_ing.sh

批量执行

[root@slave test]# for f in `ls student*` ;do echo $f | awk -F 'finish' '{ print "mv " $0 " " $1 "ing"$2}';done | bash

[root@slave test]# ls student_*

student_01_ing.sh  student_03_ing.sh  student_05_ing.sh  student_07_ing.sh  student_09_ing.sh

student_02_ing.sh  student_04_ing.sh  student_06_ing.sh  student_08_ing.sh  student_10_ing.sh

或:

for f in `ls student*` ;do echo $f | mv $f `awk -F 'finish' '{ print  $1 "ing" $2}'`;done

方法三: rename命令,专业处理批量修改文件名的linux 命令

用法: man rename

f4223a03380212d94f4d2708a2bf3ebe.png

[root@slave test]# rename "finish" "ing" student_*

[root@slave test]# ls student_*

student_01_ing.sh  student_03_ing.sh  student_05_ing.sh  student_07_ing.sh  student_09_ing.sh

student_02_ing.sh  student_04_ing.sh  student_06_ing.sh  student_08_ing.sh  student_10_ing.sh

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值