2010-09-21 3 views
1

J'ai les noms de tous les fichiers dans output.txt mais je n'ai pas folderpath dans le fichier output.txt. Par exemple, si filename = test.txt et son folderpath=/usr/local/bin que dans le fichier output.txt, je ne filename as test.txtPerl File Handling question?

output.txt fichiers a plusieurs entrées pour filename, ce que je suis en train de faire est:

  1. Déplacer tous les fichiers présents output.txt à un autre dossier dit '/ usr/local/test/data /', alors ma question est comment puis-je faire cela en utilisant Perl Script?

  2. Supprimer tous les fichiers qui sont présents dans le fichier output.txt de l'emplacement réel, en utilisant leur folderpath, donc par exemple, le script doit d'abord passer test.txt à un autre emplacement du dossier, par exemple, /usr/local/test/data/test.txt et supprimer test.txt de sa réelle emplacement à l'aide folderpath informations, par exemple, le script devrait supprimer /usr/local/bin/test.txt

Toutes les suggestions seraient très appréciés.

Mises à jour: Ci-dessous les scripts lit le fichier sortie.txt et obtient la taille de chaque fichier et la taille totale de tous les fichiers présents dans le sortie.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"; 

Courtoisie: RickFAnswer

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 

Mon fichier sortie.txt ont également des fichiers dont le nom contient des caractères spéciaux, par exemple, 63551_106640_63551 IBM &#253, Software Delivery & Fulfillment (Div-61) données IPS 20/08/2010 v3.xlsm

Si vous voir ci-dessus le fichier a la valeur codée de &#253 mais mon nom de fichier a le symbole de caractère spécial réel pour cela et donc va copier ou déplacer prendre mon ce fichier également en compte et déplacer les fichiers.

+0

Pouvez-vous montrer quelques lignes de votre fichier 'output.txt', ainsi que le contenu de votre script jusqu'à présent (si vous avez commencé à écrire encore)? –

+0

Si vous voulez faire référence au fichier sous unix, utilisez-vous "?" dans le nom de fichier, ou le caractère spécial? – Powertieke

Répondre

1

Une suggestion serait d'utiliser la fonction rename de perl. Vous pouvez l'utiliser pour déplacer fichiers comme ceci:

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"; 
} 
+2

'File :: Copy' a une fonction' move' qui peut être plus sûre. –

+0

@Platinum Azure: Pouvez-vous donner un exemple. – Rachel

+0

Re: @Platinum: http://perldoc.perl.org/File/Copy.html – RickF