Esiste una funzione in Perl che elenca tutti i file e le directory in una directory? Mi ricordo che Java ha il File.list()
per fare questo? Esiste un metodo paragonabile in Perl?Come posso elencare tutti i file in una directory con Perl?
risposta
Se si desidera ottenere il contenuto di una data directory, e solo esso (cioè senza sottodirectory), il modo migliore è quello di utilizzare opendir/readdir/closedir:
opendir my $dir, "/some/path" or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;
È anche possibile utilizzare:
my @files = glob($dir . '/*');
Ma a mio parere non è buono, soprattutto perché glob è una cosa abbastanza complessa (può filtrare i risultati automaticamente) e usarlo per ottenere tutti gli elementi di directory sembra un compito troppo semplice.
D'altra parte, se avete bisogno di ottenere contenuti da tutte le directory e sottodirectory, non v'è praticamente una soluzione standard:
use File::Find;
my @content;
find(\&wanted, '/some/path');
do_something_with(@content);
exit;
sub wanted {
push @content, $File::Find::name;
return;
}
questo dovrebbe farlo.
my $dir = "bla/bla/upload";
opendir DIR,$dir;
my @dir = readdir(DIR);
close DIR;
foreach(@dir){
if (-f $dir . "/" . $_){
print $_," : file\n";
}elsif(-d $dir . "/" . $_){
print $_," : folder\n";
}else{
print $_," : other\n";
}
}
si dovrebbe verificare opendir per il fallimento (opendir ... o morire "Messaggio di errore : $! "). Inoltre, mi manca qualcosa? Cosa sta facendo Win32 :: GUI :: DoEvents()? (Non vedo nulla di rilevante nella domanda.) – Telemachus
questo è il modo migliore che non voglio o desidero ricordare espressioni regolari per qualcosa che dovrebbe essere facile da fare, userò questo per creare una funzione come lista ($ dir , "f"); per i file "d" per la directory, grazie per aver postato questo – Geomorillo
readdir() lo fa.
check http://perldoc.perl.org/functions/readdir.html
opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
closedir DIR;
use File::Find;
finddepth(\&wanted, '/some/path/to/dir');
sub wanted { print };
Sarà passare attraverso le sottodirectory se esistono.
Questo elenco di tutto (compresi gli indici secondari) dalla directory specificare, in ordine e con gli attributi. Ho passato giorni a cercare qualcosa per farlo, e ho preso parte da questa discussione intera, e un po 'di mia, e ho messo insieme. GODERE!!
#!/usr/bin/perl --
print qq~Content-type: text/html\n\n~;
print qq~<font face="arial" size="2">~;
use File::Find;
# find(\&wanted_tom, '/home/thomas/public_html'); # if you want just one website, uncomment this, and comment out the next line
find(\&wanted_tom, '/home');
exit;
sub wanted_tom {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat ($_);
$mode = (stat($_))[2];
$mode = substr(sprintf("%03lo", $mode), -3);
if (-d $File::Find::name) {
print "<br><b>--DIR $File::Find::name --ATTR:$mode</b><br>";
} else {
print "$File::Find::name --ATTR:$mode<br>";
}
return;
}
Arghh, i miei occhi! – javs
Se sei un fannullone come me come si potrebbe utilizzare il modulo File::Slurp. La funzione read_dir volontà legge il contenuto della directory in un array, elimina i puntini, e se il prefisso necessario i file restituiti con il dir per percorsi assoluti
my @paths = read_dir('/path/to/dir', prefix => 1) ;
- 1. Come posso elencare tutti i file in una directory usando Perl?
- 2. Come posso elencare i file di una directory in Rust?
- 3. Come elencare i file nella directory corrente?
- 4. Come elencare i file in una directory di Android?
- 5. Elimina tutti i file in una directory
- 6. OutOfMemory quando elencare i file in una directory
- 7. Come posso elencare TUTTI i record DNS?
- 8. Elenca tutti i file in una directory PHP
- 9. Come posso elencare tutti i moduli in un repository CVS?
- 10. Eliminazione di tutti i file in una directory con Python
- 11. Rimuovere tutti i file in una directory
- 12. Stampa simultaneamente tutti i file in una directory con gnuplot?
- 13. lista PHP tutti i file nella directory
- 14. Come includere tutti i file di una directory con cmake?
- 15. Come posso elencare tutti i vhosts in nginx
- 16. Usa Spark per elencare tutti i file in una directory Hadoop HDFS?
- 17. Unire tutti i file in una directory, con un separatore
- 18. Come eliminare tutti i file in una directory utilizzando batch?
- 19. Utilizzo di Perl per rinominare i file in una directory
- 20. Come posso elencare tutti i pad in Etherpad-lite
- 21. Come usare rsync - sorgente di sola lista per elencare tutti i file in quella directory?
- 22. Come elencare tutti i file in una cartella S3 usando Nebbia in Ruby
- 23. git: come posso elencare TUTTI i file presenti in un dato commit?
- 24. Come eliminare TUTTI I FILE in una directory specificata sull'app?
- 25. Come si generano tutti i file in una directory?
- 26. Trova tutti i file CSV in una directory usando Python
- 27. Come elencare tutti i file modificati in un volume shadow?
- 28. Come posso elencare (ls) gli ultimi 5 file modificati in una directory?
- 29. Come elencare tutti i file nella directory public/images in un'applicazione Play Framework 2 Scala?
- 30. scorrere tutti i file Word in Directory
Ho sempre dimenticato che readdir restituisce solo una lista di nomi di file relativi, non l'intero percorso! –
Grazie per aver scoraggiato l'uso del globbing per questo compito. Un altro svantaggio dell'uso del globbing per questo è che non troverà i file nascosti (quelli che iniziano con un punto). – josch