赞
踩
续写之后不久看到这一篇诗文,有感而录:
《临江仙》【宋】晏几道
梦后楼台高锁,酒醒帘幕低垂。去年春恨却来时。落花人独立,微雨燕双飞。
记得小苹初见,两重心字罗衣。琵琶弦上说相思。当时明月在,曾照彩云归。
目录
在日常使用电脑中,因手误复制了一堆文件,一个一个删除太麻烦,于是想偷个懒的我就去学习了一下bash脚本,以实现批量修改文件名、批量删除等等操作。
注意:下面程序执行过程为:修改文件名为.sh后缀,然后在脚本所在文件夹下右键打开git bash环境,执行{bash fileName.sh}即可成功运行脚本。
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
- #!/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 {} \;
- #!/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 {} \;
- #!/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 {} \;
后续还会补充的,(・∀・(・∀・(・∀・*)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。