亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2402 | 回復(fù): 5
打印 上一主題 下一主題

如何使用 perl篩選出目錄中的文件并打開 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-07-10 21:49 |只看該作者 |倒序瀏覽
比如目錄/opt/data下有abc_01_01.data, abc_01_02.data, abc_02_01.data, abc_02_03.data 這樣的文件,文件都是以abc_ 開頭的, 第一個數(shù)字是文件的編號,不同的編號的文件內(nèi)容格式不同,第二個數(shù)字是寫入的文件序號,序號是不固定的,每一個編號對應(yīng)的最大的序號的文件才是要使用的, 也就是這里的abc_01_02.data,abc_02_03.data是有效的文件

那么請問我如何才能定位到我想要的文件上,并且使用別的程序能夠打開它. 這里比如說是 linux下的cat吧

請幫忙寫出完整的,可執(zhí)行的perl程序,由于本人目前是perl的小白,還沒有能力通過一兩個提醒就能寫出來. 所以麻煩大家了

注: 我只查到了使用find可以查找指定目錄的文件,但不能篩選出相應(yīng)的文件,也不能使用程序分別打開這些文件.
這是我找到的代碼

use strict;
use File::Find;
my @path = '/opt/data';
sub wanted {
    if ( -f $File::Find::name ) {
        if ( $File::Find::name =~ /abc/ ) {         
            print "$File::Find::name\n";
        }
    }
}
find( \&wanted, @path );

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
2 [報告]
發(fā)表于 2013-07-10 22:46 |只看該作者
你可以使用正則來篩選查找到的文件,例如你篩選出所有編號01的文件你可以這樣寫 /_01_/
如果你想打開篩選出的文件 你可以使用open FF,"文件名"; 就行了

論壇徽章:
0
3 [報告]
發(fā)表于 2013-07-10 22:51 |只看該作者
我是想篩選出  目錄下的所有的不同編號的文件,出現(xiàn)幾個編號要幾個,而且這個是不固定的. 再有就是編號后面的序號,只要最大的那個序號的文件

回復(fù) 2# grshrd49


   

論壇徽章:
7
酉雞
日期:2013-10-30 17:17:51水瓶座
日期:2014-01-25 14:47:21天秤座
日期:2014-02-20 09:49:50處女座
日期:2014-11-04 17:44:082015年亞洲杯之中國
日期:2015-03-09 17:21:312015亞冠之北京國安
日期:2015-06-01 16:58:552015亞冠之山東魯能
日期:2015-06-19 11:30:08
4 [報告]
發(fā)表于 2013-07-11 08:08 |只看該作者
perldoc -f glob

論壇徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
5 [報告]
發(fā)表于 2013-07-11 09:57 |只看該作者
回復(fù) 3# linuxnature

這個假設(shè)你的文件已經(jīng)都在@files這個列表中;然后就可以輸出你需要的文件了
  1. use strict;

  2. my @files = ("abc_01_08.data","abc_01_4322.data","abc_02_444.data","abc_02_111.data");
  3. my %file_hash;
  4. for(@files){
  5.         if(/abc_(\d*)_(\d*).data/){
  6.                 $file_hash{$1}{$2}=$_;
  7.         }
  8. }
  9. my $max;
  10. my $need_file;
  11. for my $k1 (keys %file_hash){
  12.         print "$k1\n";
  13.         $max = (keys %{$file_hash{$k1}})[0];
  14.         $need_file = $file_hash{$k1}{$max};
  15.         print "debug-$max\n";
  16.         for my $k2 (keys %{$file_hash{$k1}}){
  17.                 if($max < $k2){
  18.                         $max = $k2;
  19.                         $need_file = $file_hash{$k1}{$k2};
  20.                 }
  21.                 print "  $k2\n    $file_hash{$k1}{$k2}\n";
  22.         }
  23.         print "need file -- $need_file\n";
  24. }
復(fù)制代碼

論壇徽章:
0
6 [報告]
發(fā)表于 2013-07-11 11:19 |只看該作者
太感謝了, 我只需要把獲取的文件名賦給 $files就可以了 , 別的地方稍加修改應(yīng)該就能用了. 非常感謝大俠
回復(fù) 5# grshrd49


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP