[经验总结]Perl输出csv文件

来源:互联网 发布:js获取字段值 编辑:程序博客网 时间:2024/06/05 04:28

#!/usr/bin/perl -w

# File:    getinfo.pl
# Creator: thinkhy
# Usage:   ./getinfo path outputfile  
# Date:    2010年 03月 07日 星期日 15:23:18 CST

# 回复梁同学的需求,写了个Perl脚本来实现功能:
#ubuntu系统:一个目录下有100个左右dat和txt文件,现需要你利用脚本程序把该目录下的每个文件的大小和行数计算出来,并把结果显示到一个excel文件中,第一列为文件名,第二列为文件大小,第三列为文件中字符的行数!


$path = $ARGV[0];  # 查找的路径
$output = $ARGV[1]; # 输出的csv文件名(不包括扩展名)

if (!$path || !$output) {
    print "Usage: ./getinfo path outputfile/nHave fun!/n";
    exit;
}

chomp ($path);

# 扩展名
$ext1 = "dat";
$ext2 = "txt";

$cmd = "find $path -regex /".*//.//(//($ext1//)//|//($ext2//)//)/$/"  -exec ls -1 /"{}/" //;";

@files = `$cmd`;

$i=0;
foreach (@files) {
    $filename = $files[$i];
    chomp ($filename);

    $cmd = "wc -l $filename|cut -d' ' -f1";
    $myline = `$cmd`;
    chomp ($myline);

    $cmd = "stat -c /"%s/" $filename";
    $mysize = `$cmd`;
    chomp ($mysize);

    $files[$i] = "$filename,$mysize,$myline/n";
    $i++;
}

$filename = "$output.csv";
open (LOG1 , " > $filename " )
        or  die  " Couldn't open $filename  for writing: $! " ;
print "@files";
print  LOG1 "@files" ;   # 为什么  用@files输出,除第一行外的行首都多了一个空格。

原创粉丝点击