Unix Scripting Question
Chris Purcell
redhat at cjp.us
Tue May 4 14:46:22 UTC 2004
Cupp Michael E Contr AFRL/DIB said:
> I have a file (a.lst) that has a list of fully pathed filenames, 1 per
> line - in this format:
>
> "/path/to/the/name_of_file.doc"
> "/path/to/the/other/name of the doc noting spaces.doc"
>
> I need to know how I can loop through this file, a.lst, and for each
> entry, perform a test -s on it. If it exists, I want to put the entry
> into exists.txt, if it does not, I want to put the entry in noexist.txt
> -
>
> Can someone please help me? (I've tried for foo in `cat a.lst`, but due
> to the spaces in 90% of the filenames, it pukes, as it appears to be
> using space as the delimiter)
>
>
> Thanks again,
> Michael
Here's a quick Perl script that I put together that will do what your
asking....
#!/usr/bin/perl
$a = '/root/a.1st';
open(FILE, $a) or die "Can't open file: $!\n";
@lines = <FILE>;
close FILE;
$exists = '/root/exists.txt';
open(EXISTS, ">$exists") or die "Couldn't open exists.txt for writing: $!\n";
$nonexist = '/root/nonexist.txt';
open(NONEXIST, ">$nonexist") or die "Couldn't open nonexists.txt for
writing: $!
\n";
foreach (@lines) {
$_ =~ s/"//g;
chomp;
if (-e $_) {
print "$_ exists\n";
print EXISTS "$_\n";
} else {
print "$_ doesn't exist\n";
print NONEXIST "$_\n";
}
}
close EXISTS;
close NONEXISTS;
Chris Purcell, RHCE
>
More information about the redhat-list
mailing list