my @files = grep { ! /\.dat$/i } readdir DIR;
my @files = grep { ! /\.txt$|^\.{1,2}$/i } readdir DIR;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/perl use strict; use warnings; use File::Util; use 5.010; my $dir = 'example/path'; my $fu = File::Util->new(); my @files = $fu->list_dir($dir => {files_only => 1, files_match => qr/^(?!.*\.txt$)/i}); say for @files;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#! /usr/bin/env perl use strict; use warnings; use 5.012; use File::Find::Rule; # welche Verzeichnisse sollen durchsucht werden my @directories = qw( /tmp ); # neue Regel; suche Dateien, auf die gegebene Regel *NICHT* zutrifft, in den Verzeichnissen my @files = File::Find::Rule->file()->not( # Regel: Datei endet auf .txt File::Find::Rule->new->name( '*.txt' ) )->in( @directories ); # Treffer ausgeben say for @files;
1 2 3 4 5 6 7
foreach my $filename (@files) { if (($filename =~ /\.txt$/) || ($filename eq ".") || ($filename eq "..")) { next; } # alle anderen Dateien werden verschoben. }