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

这篇博客分享了一段Perl脚本,用于在Ubuntu系统中遍历指定目录,查找.dat和.txt文件,计算它们的大小和行数,并将结果保存到CSV文件中。脚本通过命令行参数接收输入目录和输出文件名,使用find、ls、wc和stat等命令获取文件信息,并将结果以逗号分隔格式写入CSV文件。

#!/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输出,除第一行外的行首都多了一个空格。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值