Perl文件处理问题?

时间:2010-09-21 14:17:15

标签: perl file scripting

我在output.txt中有所有文件的名称,但我在folderpath文件中没有output.txt。例如,如果filename = test.txt及其folderpath=/usr/local/bin而不是output.txt文件,我只有filename as test.txt

output.txt个文件有filename个条目,我要做的是:

  1. 将所有存在的文件output.txt移动到另一个文件夹中说'/ usr / local / test / data /',所以我的问题是如何使用Perl Script执行此操作?

  2. 使用output.txt从实际位置删除folderpath文件中的所有文件,例如,脚本应首先将test.txt移动到其他文件夹位置,比方说,/usr/local/test/data/test.txt并使用文件夹路径信息从其实际位置删除test.txt,即脚本应删除/usr/local/bin/test.txt

  3. 任何建议都将受到高度赞赏。

    更新 下面的脚本读取output.txt文件并获取每个文件的大小和output.txt中存在的所有文件的总大小

    my $folderpath = 'the_path';
    open my $IN, '<', 'path/to/infile';
    my $total;
    while (<$IN>) {
        chomp;
        my $size = -s "$folderpath/$_";
        print "$_ => $size\n";
        $total += $size;
    }
    print "Total => $total\n";
    

    礼貌:RickF Answer

    Output.txt

    2304_2328_Test Data November 19 2003 - Test Tele.xls
    2344_2341_Data Dummy Test 12-17.doc
    2343_2342_Dummy Test Test 12-17.doc
    

    我的output.txt文件也有一些名称包含特殊字符的文件,例如, 63551_106640_63551 IBM &#253;软件交付和实施(Div-61)Data IPS 08-20-2010 v3.xlsm

    如果您在上面看到该文件的编码值为&#253,但我的文件名具有实际的特殊字符符号,因此将复制或移动我的此文件也会考虑并移动文件。

1 个答案:

答案 0 :(得分:1)

一个建议是使用perl的rename函数。你可以使用它来移动文件,如下所示:

use 5.012;
use warnings;

my $folderpath = '/some/where/';   # is it really "/usr/local/bin"? be careful now!!
my $tofolder   = '/usr/local/test/data';  # must have permissions to use this and $folderpath

my @files = ('test.txt', 'someotherfile.txt');

for my $file (@files) {
    rename "$folderpath/$file", "$tofolder/$file"
        or warn "Couldn't move $file";
}