免费注册 查看新帖 |

Chinaunix

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

根据日期选取目录中的文件问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-08 11:58 |只看该作者 |倒序浏览
大家好!
我有一个目录,里面的文件都是以filename.yyyymmdd的形式命名,如file.20030122
我想把这个目录中的每个月的文件合并成一个文件,比如所有可以ls *200301*的一月份的文件合并成month_200301
请问用perl语言该如何做?
thanks

论坛徽章:
0
2 [报告]
发表于 2003-02-08 21:26 |只看该作者

根据日期选取目录中的文件问题

应该用数据库去处理这些事情,费脑子,看到那些正则表达式就眼晕,哈

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-02-09 13:05 |只看该作者

根据日期选取目录中的文件问题

cat `ls |grep 200301` >; month_200301
用shell script就可以了...用perl反而複雜..

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-02-09 13:13 |只看该作者

根据日期选取目录中的文件问题

如果上面那個command 不能Work..換下面的..
cat `find . -name '*200301' -print` >;month_200301

我手邊沒有linux/unix環境..沒辦法測試...

论坛徽章:
0
5 [报告]
发表于 2003-02-09 16:24 |只看该作者

根据日期选取目录中的文件问题

谢谢各位
但问题是我要自动执行,怎样要让程序知道该目录下的文件那个是当月的
就是说怎样让程序发现该月是2月,从而决定去找含有200302的文件名的文件并把他们合并?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2003-02-09 19:56 |只看该作者

根据日期选取目录中的文件问题

用perl的話....可以放在crontab中每個月執行...
利用
@date = localtime(time);
取得目前的年份與月份..($year,$month)...
然後將這兩個數字組合成新的string($year_month)..

然後open目前的directory...取得directory handle..
每次讀取這個handle...得到這個目錄下的檔案名稱....
然後利用=~m/$year_month/;  匹配目前的檔名是否符合條件..
如果符合...
open 一個filename叫$year_month的檔案(或者你可以自己設定)
然後..一符合馬上將這個符合的檔案寫入新開的檔案中..直到目錄全部
讀完..
大概就是上面這樣...你慢慢照著做..真的不難...

程序怎麼寫..你自己慢慢查吧..
不然你永遠學不會perl....
====================
用shell script的話...也很簡單..
利用 date、cut、取得目前的年份與月份..
然後利用find或ls取得目前目錄下的所有檔名..
利用grep或fgrep就可以filter出你要的檔案..
或者利用awk..也是一樣...

论坛徽章:
0
7 [报告]
发表于 2003-02-10 19:05 |只看该作者

根据日期选取目录中的文件问题

thks!
我碰到一个问题,怎样打开目录?

我用下面的方法打开目录输出的东西有乱码,而且还重复

  1. #!/usr/bin/perl
  2. open (DIR,"/var/mlogs")|| die "can not open it:$!";
  3. @contents=<DIR>;;
  4. close(DIR);
  5. foreach $ddd(@contents){
  6.         print "$ddd\n";
  7. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2003-02-10 19:24 |只看该作者

根据日期选取目录中的文件问题

原来要用opendir
读目录用readdir
太笨了,呵呵
  1. #!/usr/bin/perl
  2. opendir (DIR,"/etc/")|| die "can not open it:$!";
  3. @contents=readdir(DIR);
  4. close(DIR);
  5. foreach $ddd(@contents){
  6.         print "$ddd\n";
  7. }
复制代码


谢谢大家,有问题我再问

论坛徽章:
0
9 [报告]
发表于 2003-02-11 08:53 |只看该作者

根据日期选取目录中的文件问题

最好把当前目录改为你所要打开的目录,否则在打开文件时会提示找不到文件。
使用的命令为:chdir($path);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP