The scipt was the command line shown
below.
I have received a suggestion from Chris P.
(THANKS, Chris) to use the perl script shown below - the problem is that
my a.lst as used for input is formatted like this:
"/path/to/file/file name.doc"
"/path/to/file/file name.doc"
"/path/to/file/file name.doc"
"/path/to/file/file name.doc"
"/path/to/file/file name.doc"
The problem with my a.lst is that after
the closing ", there may or may not be trailing white space. If there
is, it's not allowing the match, and therefore the compare fails.
Any ideas how to get perl to ignore white
space after the closing " or how I can strip this off the end. (BUT NOT
OUT OF THE MIDDLE - some of my file names in the a.lst are file ::SPACE::
::SPACE:: :SPACE:: name.doc - or similar.
Thanks,
M
Chris' script here:
#!/usr/bin/perl
$a = '/export/home/oracle/a.lst';
open(FILE, $a) or die "Can't open
file: $!\n";
@lines = <FILE>;
close FILE;
$exists =
'/export/home/oracle/exists.txt';
open(EXISTS, ">$exists") or
die "Couldn't open exists.txt for writing: $!\n";
$nonexist =
'/export/home/oracle/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;
-----Original Message-----
From:
redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 11:34
AM
To: 'General Red Hat Linux
discussion list'
Subject: RE: Unix Scripting
Question
Can you post your script?
-----Original
Message-----
From: Cupp Michael E Contr
AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 11:03
AM
To: 'General Red Hat Linux
discussion list'
Subject: RE: Unix Scripting
Question
Still no luck -
servername $for foo in
`cat bb.lst` ^Jdo^Jecho $foo^Jdone
"/apps/htdocs/afrl/EBS/microsite/8583/COF\
Summary\
Apr03\
v2_2.ppt"
"/apps/htdocs/afrl/EBS/microsite/8583/Century\
of\
Flight\
\
Award\
-\
15Jan03_1.ppt"
servername $cat bb.lst
"/apps/htdocs/afrl/EBS/microsite/8583/COF\
Summary\ Apr03\ v2_2.ppt"
"/apps/htdocs/afrl/EBS/microsite/8583/Century\
of\ Flight\ \ Award\ -\ 15Jan03_1.ppt"
-----Original Message-----
From:
redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 10:56
AM
To: 'General Red Hat Linux
discussion list'
Subject: RE: Unix Scripting
Question
Using
sed, you first need to escape the space, and then escape the back-slash.
-----Original
Message-----
From: Cupp Michael E Contr
AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 10:51
AM
To: 'General Red Hat Linux
discussion list'
Subject: RE: Unix Scripting
Question
How
would I do that - :g/ /s/\ /g doesn't seem to work.
-----Original Message-----
From:
redhat-list-bounces@xxxxxxxxxx [mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Dege, Robert C.
Sent: Tuesday, May 04, 2004 10:41
AM
To: 'General Red Hat Linux
discussion list'
Subject: RE: Unix Scripting
Question
Your
problem could be that you need to escape the spaces in the file names prior to
running your test.
Modify
your a.lst file & replace all spaces ' ' with slash space '\ '
-----Original
Message-----
From: Cupp Michael E Contr
AFRL/DIB [mailto:Michael.Cupp@xxxxxxxxxxxx]
Sent: Tuesday, May 04, 2004 10:26
AM
To: 'redhat-list@xxxxxxxxxx'
Subject: Unix Scripting Question
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