可能用到的shell批处理操作

本文介绍了如何使用Shell脚本进行文件批处理操作,包括重命名某个类型的全部文件和移动指定范围内的文件。重命名部分提到了通过`basename`获取文件名,利用`rename`命令进行批量改名,而移动文件则利用`printf`格式化数字并配合`mv`命令实现文件的有序迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重命名某个类型的所有文件

#!/bin/bash
for file in ./input/*
do
	echo $file
	echo ${file##*/}
	# mkdir -p ./output/${file##*/}
	rename -v 's/png/jpg/' $file/*.png
done

① 循环需要的文件夹
${file##*/}这个的意思为取路径斜杆/最后的内容。
例如文件名:file=/home/dd/a.txt, 则${file##*/}a.txt
${file}:取file变量本身的内容
${file#*/}:删掉第一个/及其左边的字符串
${file##*/}:删掉最后一个/及其左边的字符串
Tips: 使用一个#为最小匹配,两个#为最大匹配,右边的匹配使用%
③ 使用rename之前,可能需要先安装。
rename -v 's/png/jpg/' $file/*.png$file/下的所有png图片都重命名为jpg

移动指定范围内的文件

#!/bin/bash
# 循环1~100的数
for i in {1...100}
do
	num=$(echo ${i}|awk '{printf("%04d\n", $0)}')
	dir=/home/ddd
	mv $dir/video_$num $dir/test
done

/home/ddd文件夹下video_0001~video_0100的文件移动到/home/ddd/test
awk指定的作用是当数字不足位数的时候,向右填充0。%04d所以填充四个0,当i等于2时,num输出为0002
$()的作用将其中包含的命令的输出赋值给变量num

Tips: 没事别打空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值