Shell代码
重命名某个类型的所有文件
#!/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: 没事别打空格。
本文介绍了如何使用Shell脚本进行文件批处理操作,包括重命名某个类型的全部文件和移动指定范围内的文件。重命名部分提到了通过`basename`获取文件名,利用`rename`命令进行批量改名,而移动文件则利用`printf`格式化数字并配合`mv`命令实现文件的有序迁移。
2951

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



