simple, yet frustrating
[1/3] from: balayo:mindspring at: 25-Sep-2000 19:11
howdy list,
This doesn't seem to be the time to be asking *really* easy
questions, but I'm frustrated enough to go for it anyway.
this is ftpdownload.r, sans the interactive part.
site: ftp://ftp.rebol.com/pub/downloads/
pattern: "*.gz"
files: read site
foreach file files [
if find/match/any file pattern [
write/binary file read/binary site/:file
]
]
what I can't seem to do is have this fetch "*.gz" files, but not "gz.bak"
files. I don't want the backups (later, I'll modify this to delete them).
of course, the site and pattern have been changed to protect the innocent.
thanks for your patience...
--
Spend less time composing sigs.
-tom
[2/3] from: rebol::techscribe::com at: 25-Sep-2000 17:36
Hi Tom,
gz.bak
certainly contains the patter "*.gz", so you shouldn't be too
surprised that it qualifies for find.
I have to run, but one quick and dirty way to accomplish what you're trying
to do would be to say:
bak-pattern: "*.gz.bak"
pattern: "*.gz"
if all [
find/match/any file pattern
not found? find/match/any file bak-pattern
]
[
do whatever it is you must do ...
]
At 07:11 PM 9/25/00 +0100, you wrote:
>howdy list,
>This doesn't seem to be the time to be asking *really* easy
<<quoted lines omitted: 15>>
>Spend less time composing sigs.
>-tom
;- Elan [ : - ) ]
author of REBOL: THE OFFICIAL GUIDE
REBOL Press: The Official Source for REBOL Books
http://www.REBOLpress.com
visit me at http://www.TechScribe.com
[3/3] from: joel:neely:fedex at: 25-Sep-2000 20:01
Hi, Tom...
[balayo--mindspring--com] wrote:
...
> site: ftp://ftp.rebol.com/pub/downloads/
> pattern: "*.gz"
<<quoted lines omitted: 6>>
> what I can't seem to do is have this fetch "*.gz" files, but not
> "gz.bak" files.
The gotcha here is that find/match/any will accept any match of
the pattern, regardless of position. Take a look at this excerpt
from my box (some names changed/deleted for security):
>> foreach filename sort read %./ [
[ if find/match/any filename "*.gz" [print filename]
[ ]
analog3_32_tar.gz
blort.gz.bak
enterprise-4.2-export-us.hppa1.1-hp-hpux10.10.tar.gz
foo.gz.bak
labrea.gz.tar
== none
Since the pattern "*.gz" can match anywhere the sequence ".gz"
appears in the file name (even internally), I get lots of false hits.
To force it to appear only at the end, I can specify a parse rule
that only matches in that case:
>> foreach filename sort read %./ [
[ if parse/all filename [thru ".gz"] [print filename]
[ ]
analog3_32_tar.gz
enterprise-3.6-export-us.hppa1.1-hp-hpux10.10.tar.gz
== none
This is based on the fact that parse/all string rule returns
true only if we get all the way to the end of the string, therefore
the ".gz" must occur in the string and must be at the end.
Hope this helps!
-jn-
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted