linux 按日期复制文件夹,Linux 按文件日期分类文件
一、需求背景
由于业务需要,在特定的FTP下会不断的产生相关文件,大概每分钟一个文件,每天1500个上下。但是长期下去单个目录下文件数量就会太多,可能导致性能问题。所以现在想按照日期将文件分类,将同一天产生的文件放到以产生文件日期命名的目录下,比如所有在2017-01-01产生的文件都放在20170101目录下。
二、技术思路
可以定时遍历目标文件所在源目录,利用stat获取单个文件的时间信息,然后将其mv到以其时间信息为特征命名的目的目录中去。
1、定时执行脚本可利用Linux的cron。使用crontab -e来编辑其配置文件。
crontab配置格式如下:
f1 f2 f3 f4 f5 program
其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program 表示要执行的程序。当f1为*时表示每分钟都要执行program,f2为*时表示每小时都要执行程序,其馀类推。
当 f1 为*时表示每分钟都要执行 program,f2为*时表示每小时都要执行程序,其馀类推。
当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行,其馀类推。
当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其馀类推。
当f1为 a, b, c,... 时表示第 a, b, c,...分钟要执行,f2 为a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推。
若想要脚本每分钟执行一次:
* * * * * script.sh
2、在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。
由于源文件产生之后并不会被修改,故采用文件修改时间作为其产生时间。如下例中的Modify一行。
[liuhao@my test]$ stat sh.sh
File: "sh.sh"
Size: 524 Blocks: 8 IO Block: 4096 普通文件
Device: fd02h/64770d Inode: 168698107 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 509/ liuhao) Gid: ( 0/ root)
Access: 2017-01-23 09:51:32.160824300 +0800
Modify: 2017-01-23 09:51:29.293824304 +0800
Change: 2017-01-23 09:51:29.294824304 +0800
3、利用awk处理stat得到的文件产生时间信息来得到目标文件目录名。
date=`stat $file | grep "Modify:" | awk -F ":| |-" '{print $3$4$5}'`
if [ ! -e $date ];then
mkdir $date
fi
三、代码实现
#! /bin/sh
rootDir="/home/liuhao/test/"
sDir=$rootDir
echo $sDir
cd $rootDir"/test"
touch ./.date
#Modify: 2017-01-23 09:31:37.228825682 +0800
dDir=`stat ./.date | grep "Modify:" | awk -F ":| |-" '{print $3$4$5}'`
echo $dDir
#现在看来,和dDir相关的都没用了
if [ ! -e $dDir ];then
mkdir $dDir
fi
for file in $rootDir/*
do
if [ -f $file ];then
date=`stat $file | grep "Modify:" | awk -F ":| |-" '{print $3$4$5}'`
if [ ! -e $date ];then
mkdir $date
fi
echo $file $date
mv $file $date
fi
done
linux 按日期复制文件夹,Linux 按文件日期分类文件相关推荐
- linux命令回退文件夹,Linux命令总结
账号管理-注意:在管理员(root)的权限下使用 创建用户:useradd (选项) 用户名--useradd aaa 用户口令:passwd (选项) 用户名--passwd aaa 注意:设置密码 ...
- Linux之不删除指定文件夹,其他都删(文件和文件夹)
例子1 查看当前文件夹下有哪些文件和子文件夹 我们看到俩个文件夹 和多个文件,我现在的需求是 只保留 public 这个文件夹 其他的文件夹和文件 统统都删除,怎么办呢? 只要一个命令 ls | gr ...
- linux 删除tmp文件夹,Linux下tmp文件夹的文件自动删除的问题(转)
场景: 近日发现有一台机器tmp文件夹下放置的文件无辜丢失,而且排查发现是自动丢失,并且,只是删除10天之前的文件. 本来以为是哪位写了一个自动执行脚本, find了一下10天前的文件删除了. 结果, ...
- linux 新建1 10文件夹,linux创建目录和文件的命令
linux下进行操作难免会遇到创建文件或者目录的情况,那么我们要使用什么目录来创建目录和文件呢?下面由学习啦小编为大家整理了linux创建目录和文件命令的相关知识,希望大家喜欢! 一.linux创建目 ...
- linux scp 过滤文件夹,linux中使用scp远程拷贝文件及文件夹
linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...
- linux mkdir 文件夹,Linux mkdir 创建文件夹命令
介绍: 该命令创建指定的目录名,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录 语法: mkdir [-m] [-p] 目录名 选项介绍: -m: 对新建目录设置 ...
- linux截图保存文件夹,linux 下截图工具(转)
在Linux下很多软件使用命令就可以很好的操作,截图软件也不例外.刚好要截图使用一下,就找到了这款小巧的却很使用的Linux下的截图工具,就是scrot. 如何安装及使用? 1.安装篇很简单,想安装其 ...
- linux递归创建文件夹_Python中并发请求创建文件夹带来的线程安全问题
在我们日常写程序的过程中,免不了与文件系统打交道,各种开发语言都提供了与文件系统交互的指令函数,比如Python中的os模块,就提供了许多这样的指令函数,今天就以创建文件夹为例,来说一下,如果用的不当 ...
- php linux 删除文件夹,linux下如何删除文件夹
linux下删除文件夹的方法:可以使用[rm -rf 目录名]命令进行删除,如[rm -rf /var/log/httpd/access],表示删除/var/log/httpd/access目录及其下 ...
- linux下 java 压缩文件夹,java压缩文件夹linux下乱码问题
前几天写了文章介绍java文件夹的压缩(见 http://zwllxs.iteye.com/blog/836483),但是发现一个问题,在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文件 ...
最新文章
- 送出orkut邀请,当然如果需要gmail邀请,还有很多
- 每秒10W次高并发订单业务,你怎么实现?
- 转:Linux下安装Gtest/Gmock
- HTML JS正方形轮播,js,html一个页面里面多个页面轮播
- mysql不显示默认密码_免安装版mysql不出现默认密码状况(基于mysql8.0)
- ActiveMQ专题2: 持久化
- 世界银行开放数据目录:后宫数据集三千个,人生赢家就是你
- 黑马程序员--java基础加强之内省(IntroSpector)
- .NET回归 HTML----表单元素(1)和一些常用的标记
- 什么软件测试情侣头像,扫图查情侣头像软件
- 封装Win 10系统时封装工具报错,无法正常封装,封装失败
- windows下面刷新dns
- python pyhook_python使用pyHook.HookManager()返回来的event中,event.Time怎么转换成为datetime形式?...
- 正态性检验ks和sw区别_非参数检验思路总结,清晰理解就靠它了!
- 香蕉树上第十根芭蕉——深度好文-为什么要写博客
- python清屏幕_如何在python中清除屏幕?
- 开通了个人微信公众号:slbGTD,准备把GTD相关的内容写成一本书
- Linux clock子系统【3】-i2c控制器打开时钟的流程分析(devm_clk_get)(consumer侧)
- MySQL慢查询日志分析
- java list intersect_C#编程中两个List集合使用Intersect方法求交集
热门文章
- steam夏日促销用Python爬取排行榜上的游戏打折信息
- 再见,余!额!宝!!!
- el table 固定表头和首行_表头太太太复杂了,如何批量打印?简单!
- 天津大学计算机非全日制录取名单,天津大学法律硕士拟录取名单(非全日制).xls...
- UCI机器学习数据集
- Nucleic Acids Research | NONCODE数据库V6版发布,涵盖全面的动植物长非编码RNA注释
- ae画面颜色一键选取替换修改插件Composite Brush for Mac 1.5.2
- 使用 Python 解数学方程
- python可以实现的功能_Python 实现某个功能每隔一段时间被执行一次的功能方法...
- 文件件服务器,文件件服务器