Hello,
With help from this forum, I've been successful in parsing through
directories of thousands of graphics files. I need to determine which
files are postscript EPS files. Any files that aren't EPS files I can
assume are TIFF files. I have to do this because our [unix] publishing
system doesn't use file extensions, so, in its image library, all
graphics files have no extensions. I'm needing to parse through these
files to get rid of any color files, make them grayscale. Anyway, I have
a directory now with over 23,000 files in it. I've run a script with
this clause in it.
Dir.glob("*").each do |file|
if /%!PS-Adobe/ =~ open(file) {|f| f.gets}
File.rename(file, file + ".eps")
end
end
It runs just fine and does a rename for 3123 files. But, then, suddenly,
it fails with a message:
Datum: Mon, 15 Oct 2007 21:21:36 +0900
Von: Peter Bailey <pbailey@bna.com>
An: ruby-talk@ruby-lang.org
Betreff: File.rename failing after a few thousand successes . . .
Hello,
With help from this forum, I've been successful in parsing through
directories of thousands of graphics files. I need to determine which
files are postscript EPS files. Any files that aren't EPS files I can
assume are TIFF files. I have to do this because our [unix] publishing
system doesn't use file extensions, so, in its image library, all
graphics files have no extensions. I'm needing to parse through these
files to get rid of any color files, make them grayscale. Anyway, I have
a directory now with over 23,000 files in it. I've run a script with
this clause in it.
Dir.glob("*").each do |file|
if /%!PS-Adobe/ =~ open(file) {|f| f.gets}
File.rename(file, file + ".eps")
end
end
It runs just fine and does a rename for 3123 files. But, then, suddenly,
it fails with a message:
you don't have the right to read or to write that particular file,
maybe because it was created by another user or by root, and now
you're running your Ruby script as a normal user.
On the command line, you can change the rights to read, write and
execute files, as root, using
the chmod command.
You need to get the script to display the name of the file that it failed on (unless you simply didn't show it in your excerpt) and then look at the permissions for the file in question.
Also it would be a good idea to catch the exception in your code so that you can report the error and then carry on. Also make sure that you do not process the any files that you have already processed on a previous run by ignoring file names that end in ".eps".
I've had weird stuff happen on NFS before--using a local drive worked.
GL!
Peter Bailey wrote:
···
Hello,
With help from this forum, I've been successful in parsing through
directories of thousands of graphics files. I need to determine which
files are postscript EPS files. Any files that aren't EPS files I can
assume are TIFF files. I have to do this because our [unix] publishing
system doesn't use file extensions, so, in its image library, all
graphics files have no extensions. I'm needing to parse through these
files to get rid of any color files, make them grayscale. Anyway, I have
a directory now with over 23,000 files in it. I've run a script with
this clause in it.
Datum: Mon, 15 Oct 2007 21:21:36 +0900
Von: Peter Bailey <pbailey@bna.com>
An: ruby-talk@ruby-lang.org
Betreff: File.rename failing after a few thousand successes . . .
you don't have the right to read or to write that particular file,
maybe because it was created by another user or by root, and now
you're running your Ruby script as a normal user.
On the command line, you can change the rights to read, write and
execute files, as root, using
the chmod command.
Thanks, Axel. Well, yes, the original files are on Unix, but, all my
work is happening on a Windows server. I copy it over via SAMBA. But,
I'm a network administrator with full rights on the server. Maybe the
copying via SAMBA pulled over some weird permissions or something. I'll
look into this further. Thanks again.