Perl File Handling вопрос? - PullRequest
       26

Perl File Handling вопрос?

1 голос
/ 21 сентября 2010

У меня есть имена всех файлов в 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

Любые предложения будут высоко оценены.

Обновление: Приведенные ниже сценарии считывают файл 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 Ответ

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) IPS 08-20-2010 v3.xlsm

Если вы видите выше, файл имеет закодированное значение &#253, но в моем имени файла есть действительный символ специального символа для этого, и поэтому он будет копировать или перемещать, также принимать мой файл this и перемещать файлы.

1 Ответ

1 голос
/ 21 сентября 2010

Одно из предложений - использовать функцию 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";
}
...