免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1639 | 回复: 6
打印 上一主题 下一主题

有个困扰多时的难题,不知道怎样解决。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-17 15:38 |只看该作者 |倒序浏览
服务器里面有个目录,就在该目录的根目录下面有数量约为400万的小文件,大小共62G,现在想将该目录下所有文件整理分类,打算以创建这些文件的年月为条件,转移到相应目录里面,请问该如何操作?

论坛徽章:
0
2 [报告]
发表于 2009-12-17 19:11 |只看该作者

写个script

用for循环 + find 命令。

论坛徽章:
1
天秤座
日期:2013-10-23 13:20:42
3 [报告]
发表于 2009-12-17 19:51 |只看该作者
我来试试
你的给的信息很少,我假设,有这个400万的文件在
/dev/sda3 <-- 对应 路径为 /sda3
准备转移到
/dev/sda4  <-- 对应 路径为 /sda4

1. 既然是是按年月来的,我假设为年,月也类似,不过有可能要写的很长,假设从 2006年开始,假设文件为 一般文件
mkdir /sda4/{2006,2007,2008,2009}

2.对2006连
find /sda -type f  \( -mtime -200601010000 -mtime +200612312359 \) | xargs mv -t {} /sda4/2006/{} ;

3.对2007年
find /sda -type f  \( -mtime -200701010000 -mtime +200712312359 \) | xargs mv -t {} /sda4/2006/{} ;

....
本来写成
形如
$ find . \( -type d       -a -exec chmod 771 {} \; \) -o \
         \( -name "*.BAK" -a -exec chmod 600 {} \; \) -o \
         \( -name "*.sh"  -a -exec chmod 755 {} \; \) -o \
         \( -name "*.txt" -a -exec chmod 644 {} \; \)
这样就可以一句搞定,而且能节省时间,但是,你有400w,那-exex 和 -ok 会报参数太多。

ps:对于这个按照时间来分 ,有 atime ,ctime,mtime,使用mtime认为是一文件最后修改时间来定!
希望有用!

[ 本帖最后由 jerryjzm 于 2009-12-17 20:01 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-12-17 20:10 |只看该作者
原帖由 jerryjzm 于 2009-12-17 19:51 发表
我来试试
你的给的信息很少,我假设,有这个400万的文件在
/dev/sda3  



高明!

论坛徽章:
0
5 [报告]
发表于 2009-12-18 09:53 |只看该作者
顶一下

论坛徽章:
0
6 [报告]
发表于 2009-12-18 14:49 |只看该作者
多谢多谢,我来试验一下再上结果。

论坛徽章:
0
7 [报告]
发表于 2009-12-18 16:48 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP