编写Linux脚本:复制含昨日日期的文件并去除日期命名
解决方案
1. 生成昨天的日期字符串
首先用date命令生成文件名里用到的YYYYMMDD格式的昨天日期:
yesterday=$(date -d "yesterday" +%Y%m%d)
这条命令会把昨天的日期(比如20230419)存入变量yesterday。
2. 批量处理目标文件
用循环遍历指定目录下符合条件的文件,复制并重命名,强制覆盖已有文件:
# 替换为你实际的目标目录(比如./folder/folder2) target_dir="./folder/folder2" yesterday=$(date -d "yesterday" +%Y%m%d) # 遍历目录中所有名称包含昨天日期的jpg文件 for file in "${target_dir}"/*${yesterday}.jpg; do # 跳过不存在的文件(避免通配符匹配不到时出错) [ -f "$file" ] || continue # 提取不带日期的文件名:移除末尾的日期部分 new_name="${file%${yesterday}.jpg}.jpg" # -f 参数强制覆盖已存在的目标文件 cp -f "$file" "$new_name" echo "处理完成:$file → $new_name" done
3. 脚本使用方法
- 将上述代码保存为
copy_yesterday_photos.sh - 给脚本添加执行权限:
chmod +x copy_yesterday_photos.sh - 运行脚本:
./copy_yesterday_photos.sh
注意事项
- 如果文件名的日期格式不是
YYYYMMDD,需要调整date命令的格式参数,比如日期是MMDDYYYY的话,改成date -d "yesterday" +%m%d%Y - 若需要遍历整个服务器目录,把
target_dir换成/,但这样会遍历所有文件,速度较慢,建议尽量指定具体目录 - 测试时可以先把
cp -f替换成echo cp -f,先验证命令是否正确,避免误操作
内容的提问来源于stack exchange,提问作者BobW
相关产品推荐
相关产品推荐

