Windows下执行bash脚本对文件批处理(修改文件名,删除文件)

续写之后不久看到这一篇诗文,有感而录:

                                        《临江仙》【宋】晏几道

梦后楼台高锁,酒醒帘幕低垂。去年春恨却来时。落花人独立,微雨燕双飞。

记得小苹初见,两重心字罗衣。琵琶弦上说相思。当时明月在,曾照彩云归。

目录

一、前言

二、程序

1、根据修改日期批量修改文件名

2、根据创建日期删除文件

1)删除当天文件

2)根据月份删除指定文件夹下文件

3)根据指定日期的文件

三、结尾语


一、前言

在日常使用电脑中,因手误复制了一堆文件,一个一个删除太麻烦,于是想偷个懒的我就去学习了一下bash脚本,以实现批量修改文件名、批量删除等等操作。

注意:下面程序执行过程为:修改文件名为.sh后缀,然后在脚本所在文件夹下右键打开git bash环境,执行{bash fileName.sh}即可成功运行脚本。

二、程序

1、根据修改日期批量修改文件名

1)描述

因在QQ上面下载大量图片,然鹅图片名却非常乱,要动手改的话一个一个改太慢,以实现根据修改日期批量修改文件名。

2)过程

首先我去学习了一下遍历文件夹内所有的文件,得到如下结果:

 do和done就是起始,截止符,然后第五行是通过学习这篇博客,作用是获取上一次修改时间并将其作为字符串赋给变量changeTime;后面是截取第1到10个字符串,其正好是年月日,将其赋给lastChangeTime,最后就是输出时间输出文件名啦。

 1.初步尝试(建议不要运行这个)

#! /bin/sh

files=$(ls $folder)

for file in $files

do

  changeTime=$(stat -c %y $file)

lastChangeTime=$(expr substr "$changeTime" 1 10)

mv "$file" "QQ截图_lastChangeTime.jpg"

echo $lastChangeTime

  echo $file

done

弊端:如果是同一日期的文件,则只留下后面修改的文件,而且,令人啼笑皆非的是,本身这个cmd文件也囊括进去了,所以,它也就光荣牺牲了。哈哈哈!

2.较为完善版

通过学习这篇博客,以及介绍截取字符串的博客,达到预期目的,不过上述弊端还在,同一日期的还是不能排除,仅仅是排除了learn.cmd文件,不让它被吞了(自己吞自己,xswl)。这个直接在文件夹中,在目录下右键,进入git bash命令行界面,然后输入命令{bash 文件名.cmd},记住如何修改的是10的话,是在当前目录起作用的,请勿随意运行,后果可能会是重要文件没了!请勿随意运行!!!

#! /bin/sh

files=$(ls $folder)
for file in $files
do
  changeTime=$(stat -c %y $file)
lastChangeTime=$(expr substr "$changeTime" 1 15)
<<BLOCK
上面这行是截取字符串的作用,调用expr中的substr函数
可以将15修改为10,15是囊括了后面的内容,避免日期重复使文件消失
BLOCK
if [ "$file" != "learn.cmd" ];
then
mv "$file" "截图_$lastChangeTime.jpg"
echo $lastChangeTime
  echo ${file:0-4}
fi
done

2、根据创建日期删除文件
1)批量删除当天的文件
#!/bin/bash

# 指定要删除文件的文件夹路径
folder_path="/path/to/folder"

# 获取当前日期
current_date=$(date +%Y-%m-%d)

# 查找并删除当天创建的文件
find "$folder_path" -type f -newermt "$current_date" ! -newermt "$current_date + 1 day" -exec rm {} \;
2)根据月份删除指定文件夹下文件
	#!/bin/bash
	
	# 指定要删除文件的文件夹路径
	folder_path="/path/to/folder"
	
	# 指定要删除的年份和月份,以2023年9月份的为例
	year="2023"
	month="09"
	
	# 构建日期字符串,格式为YYYY-MM-DD
	date_string="${year}-${month}-01"
	
	# 获取下个月的日期字符串,用于限制删除范围
	next_month=$(date -d "${date_string} + 1 month" +%Y-%m-%d)
	
	# 查找并删除指定日期范围内的文件
	find "$folder_path" -type f -newermt "$date_string" ! -newermt "$next_month" -exec rm {} \;
3)根据指定日期删除文件
#!/bin/bash
	
# 指定要删除文件的文件夹路径
folder_path="/path/to/folder"
	
# 指定要删除的日期
year="2023"
month="11"
day="08"

# 构建日期字符串,格式为YYYY-MM-DD
date_string="${year}-${month}-${day}"

# 查找并删除指定日期的文件
find "$folder_path" -type f -newermt "$date_string" ! -newermt "$date_string + 1 day" -exec rm {} \;
三、结尾语

后续还会补充的,(・∀・(・∀・(・∀・*)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值