#!/usr/bin/perl # Skript zum nahtlosen zusammenfügen von mehreren Dateien. # (c) 2003 Robert Weiler # GPL'ed use strict; sub script_header(); sub usage(); &script_header(); if (scalar @ARGV <= 0) { &usage(); exit; } my $regex = $ARGV[0]; my $newfilename = $ARGV[1]; my ($filename, $line, @filelist, @matched); opendir DIR, "." or die "$!\n"; @filelist = readdir DIR or die "$!\n"; closedir DIR; foreach $filename (@filelist) { if (! -d $filename and $filename =~ /$regex/) { push(@matched, $filename); } } if (scalar @matched > 0) { @matched = sort(@matched); print "Matched:\n"; foreach $filename (@matched) { print " $filename\n"; } if ($newfilename ne "" and ! -e $newfilename) { open NEWFILE, ">$newfilename" or die "$!\n"; print "\nStarting to join files, output file:\n $newfilename\n"; foreach $filename (@matched) { print " -> $filename\n"; open MERGEFILE, "$filename" or die "$!\n"; while ($line = ) { print NEWFILE $line; } close MERGEFILE; } close NEWFILE; } elsif (-e $newfilename) { print "\nThe file $newfilename already exists.\n"; print "Not joining anything.\n"; } } else { print "No files matched your regex.\n"; } ### die Subroutinen sub script_header() { print "filejoin.pl 0.1.0 - a script for joining files\n"; print "(c) 2003 Robert Weiler \n"; print "\n"; print "filejoin.pl comes WITH ABSOLUTELY NO WARRANTY. See the GNU General Public\n"; print "License for details.\n"; print "\n"; } sub usage() { print "Usage: ./filejoin.pl regex newfile\n"; print "\n"; print " regex any regular expression Perl can handle, without the slashes\n"; print " newfile the name for the joined file\n"; print "\n"; print "The newfile argument is optional. If called without this argument filejoin.pl\n"; print "will just list all files that match the regex.\n"; }