一个脚本 专治杂乱

背景

之前不是自己手动搞了一个COS嘛,直接复制粘贴图片,上传到后端的服务器,返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。

今天偶尔上服务器一看,我靠,我的文件真的乱!

这还得了了,我要是长年累月的去上传文件,这不得堆积成山了,到时候我想去维护都很难了。我是shigen, 作为强迫症患者,我哪能忍,必须整治,必须整治!

整改

我要采取新的命名方式了,年月/文件名,意思是按照年月对文件进行分组,废话不多说,上代码。这次我选取的是shell脚本,当然,shigen有写代码的神器在手。

#!/bin/bash
# 匹配的文件名模式
file_pattern="2023*.png"# 遍历所有匹配的文件
for file_name in $file_pattern; do# 提取年份和月份year_month="${file_name:0:6}"# 创建目标文件夹路径target_dir="./$year_month"# 如果目标文件夹不存在,则创建它mkdir -p "$target_dir"# 移动文件mv "$file_name" "$target_dir"echo "文件已移动到目标文件夹:$target_dir/$file_name"
done

其实也挺简单,根据文件名模式找到符合条件的文件,再去截取文件名获得文件的年月,之后就是创建文件夹移动了。最终的效果如下:

可以看到文件是按照年月来分级的,目前的话我的文件主要分布在两个文件夹里,正好原来保存的也是保存的两个月的文件。但是治标不治本,根治它还得在代码里。

file_save_path = os.path.join(base_path, datetime.now().strftime('%Y%m%d%H%M%S') +'.png')

明显看到,这个是直接放在base_path下边了。和我预想的结果差了很多了。这里就是根本,必须得去修改一下:

now = datetime.now()
cur_base_path = os.path.join(base_path, now.strftime("%Y%m%d"))
if not os.path.exists(cur_base_path):os.makedirs(cur_base_path)file_save_path = os.path.join(cur_base_path, now.strftime('%Y%m%d%H%M%S') +'.png')

本地调试好了,部署了后端的服务,一切正常,可以看到我的预览地址的路径已经改过来了!我的强迫症得到了很好的治愈了。

后记

其实这个案例分享出来,不为炫技或者啥的,关键是为了展示一种思想:约定>规范>配置>编码。在做任何的设计的时候,其实前边的步骤缺一不可,否则后边都会带来很大的麻烦,造成一定的维护成本。

当然,这样的案例大家也可以试试其它的方式实现:

  • python os.move() shutil.move(source, destination)
  • java Files.move() 用到的nio下边的包
  • node.js fs.rename(source, destination, (err) =>{}
  • golang err:= os.Rename(source, destination)

我是shigen ,感谢大家的阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/90911.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基础上提出的,用于通过一个HDFS路径来访问多个NameSpace,同时与ViewFs搭配的技术是client-side mount table(这个就是具体的规则配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 总的来说ViewFs的其实就是一个中间层,用于去连接不…

Redis - 数据类型映射底层结构

简介 从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同。 字符串对象 字符串对象的编码可以是 int、raw 和 embstr 三者之一。 embstr 编码是专门用于保存简短字符串的一种优化编…

日常BUG——代码提交到了本地但是没有push,删除了本地分支如何恢复

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 代码在本地提交了,但是没有push到远程,然后删除了本地的分支。想要恢…

FiboSearch Pro – Ajax Search for WooCommerce 商城AJAX实时搜索插件

FiboSearch Pro是最受欢迎的WooCommerce 产品搜索插件。它为您的用户提供精心设计的高级 AJAX 搜索栏,并提供实时搜索建议。默认情况下,WooCommerce 提供非常简单的搜索解决方案,没有实时产品搜索,甚至没有 SKU 搜索。FiboSearch&…

iTOP-i.MX8M开发板添加USB网络设备驱动

选中支持 USB 网络设备驱动,如下图所示: [*] Device Drivers→ *- Network device support → USB Network Adapters→ {*} Multi-purpose USB Networking Framework 将光标移动到 save 保存,如下图所示: 保存到 arch/arm64/c…

ESLint是什么?

ESLint 介绍 ESLint 是一款插件,主要用来检测编写的( JavaScript )代码是否符合规范。当然在一个团队中也会自定义一些规范条件。另外正常情况下我们不需要单独安装 ESLint 去使用,这里只是为了做演示。例如 vue-cli 脚手架搭建的…

FFmpeg常见命令行(五):FFmpeg滤镜使用

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。本文是音视频系…

电脑ip地址怎么改 ip地址怎么改到别的城市

一、ip地址怎么改到别的城市 1.ip地址怎么改到别的城市,1、重启WIFI路由设备 一般手机或电脑在家或公司上网时都是接入到路由器的WIFI网络,再由路由器分配上网IP地址,如果要更换上网IP那么重启路由器设备后,路由器会向网络运营商进行宽带的重新拨号,此时手机或电脑设…

Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布

近日,专注网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT)联合全球知名分析机构Forrester发布总体经济影响独立分析报告,详细阐述了在企业数据中心部署 FortiGate 下一代防火墙(NGFW&#xff09…

如何将阿里云WiredTiger引擎的MongoDB物理备份文件恢复至自建数据库

数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章…

mobile wireless network

老人家教学:手机设置无线网络 以我家里无线网络为例:FJGDWL-zeng 以苹果手机为例:其他手机类似操作 1)【设置】 2)【无线局域网】 3)【无线局域网】列表,有的话,直接选中&#xff0…

【Terraform学习】保护敏感变量(Terraform配置语言学习)

实验步骤 创建 EC2 IAM 角色 导航到IAM 在左侧菜单中,单击角色 。单击创建角色该按钮以创建新的 IAM 角色。 在创建角色部分,为角色选择可信实体类型: AWS 服务 使用案例:EC2 单击下一步 添加权限:现在,您可以看到…

聊聊在集群环境中本地缓存如何进行同步

前言 之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说,因为他项目的redis版本不是6.0版本,因此他使用我文章介绍通过MQ来实现本地缓存同步,他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取…

游戏类APP如何提升用户的活跃度?

移动游戏行业,追求使用率的营销能发挥强大的功效,可帮助减少玩家流失、追回流失的玩家、提高活跃玩家所带来的价值以及增加付费玩家贡献的收入。 一、了解玩家需求 想要提升玩家的活跃,首先要知道,玩家喜欢玩哪些平台的游戏&…

Win10安装GPU支持的最新版本的tensorflow

我在安装好cuda和cudnn后,使用pip install tensorflow安装的tensorflow都提示不能找到GPU, 为此怀疑默认暗转的tensorflow是不带GPU支持的。 在tensorflow官网提供了多个版本的GPU支持的windows的安装包 https://www.tensorflow.org/install/pip?hlz…

Debian 10驱动Broadcom 无线网卡

用lspci命令查询无线网卡品牌: 运行下面代码后,重启即可。 apt-get install linux-image-$(uname -r|sed s,[^-]*-[^-]*-,,) linux-headers-$(uname -r|sed s,[^-]*-[^-]*-,,) broadcom-sta-dkms

SSH远程连接MacOS catalina并进行终端颜色配置

一、开关SSH服务 在虚拟机上安装了MacOS catalina,想要使用SSH远程进行连接,但是使用“系统偏好设置”/“共享”/“远程登录”开关进行打开,却一直是正在启动“远程登录”: 难道是catalina有BUG?不过还是有方法的&…

Docker本地镜像发布到阿里云

1. 本地镜像发布到阿里云 2. 镜像的生成方法 OPTIONS说明: -a :提交的镜像作者; -m :提交时的说明文字; 本次案例centosubuntu两个,当堂讲解一个,家庭作业一个,请大家务必动手,亲自实操。 docke…

论文复现--关于多视角动作捕捉工具箱 --XRMoCap的研究

分类:动作捕捉 github地址:https://github.com/openxrlab/xrmocap 所需环境: Ubuntu18.04,conda22.9.0,CUDA11.4 目录 一.环境配置conda list 一.环境配置 # 1.创建环境 conda create -n XRmocap python3.7 -y conda …

值传递、形参实参的关系、地址传递(指针和函数)

1 值传递 实现两个数字进行交换&#xff0c;代码和运行结果如下所示&#xff1a; #include<iostream> using namespace std;void change(int a, int b) {int temp a;a b;b temp;cout << "change a " << a << endl;cout << "…