我在output.txt
中有所有文件的名称,但我在folderpath
文件中没有output.txt
。例如,如果filename = test.txt
及其folderpath=/usr/local/bin
而不是output.txt
文件,我只有filename as test.txt
output.txt
个文件有filename
个条目,我要做的是:
将所有存在的文件output.txt
移动到另一个文件夹中说'/ usr / local / test / data /',所以我的问题是如何使用Perl Script
执行此操作?
使用output.txt
从实际位置删除folderpath
文件中的所有文件,例如,脚本应首先将test.txt
移动到其他文件夹位置,比方说,/usr/local/test/data/test.txt
并使用文件夹路径信息从其实际位置删除test.txt,即脚本应删除/usr/local/bin/test.txt
任何建议都将受到高度赞赏。
更新 下面的脚本读取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";
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 ý
;软件交付和实施(Div-61)Data IPS 08-20-2010 v3.xlsm
如果您在上面看到该文件的编码值为ý
,但我的文件名具有实际的特殊字符符号,因此将复制或移动我的此文件也会考虑并移动文件。
答案 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";
}