Net::FTP

A

Ari Brown

Hey all,
I'm having trouble with Net::FTP's dir command. I'm looking to get a
list of all the directories, but instead I get a list of every file
IN every directory, and the permissions and timestamps as well.

Is there any way to fix this?
What method SHOULD I use to get a list of all of the directories?

For Clarification....

ftp.dir('*/')
# => Every file in every directory and all the file permissions to
accompany them.

Thanks,
-------------------------------------------------------|
~ Ari
crap my sig won't fit
 
T

Todd Benson

ftp.dir('*/')
# => Every file in every directory and all the file permissions to
accompany them.

Leave off the forward slash after the asterisk, and then with your list:

1. select out the ones starting with 'd' since those will be your directories
2. pull out the last token of each entry which will be the directory name.

You may or may not be concerned with linked directories, which will
start with an 'l' instead.

hth,
Todd
 
A

Ari Brown

Leave off the forward slash after the asterisk, and then with your
list:

1. select out the ones starting with 'd' since those will be your
directories
2. pull out the last token of each entry which will be the
directory name.


Thanks! But is there a different command I can use to get just the
names? I happen to know that where I'm working, what I first collect
from my ftp.dir('*') will be all directories. How can I use that to
my advantage?

aRi
--------------------------------------------|
If you're not living on the edge,
then you're just wasting space.
 
T

Todd Benson

Thanks! But is there a different command I can use to get just the
names? I happen to know that where I'm working, what I first collect
from my ftp.dir('*') will be all directories. How can I use that to
my advantage?

aRi

Well there's #nlst method (using openbsd site as an example):

require 'net/ftp'
names = nil
Net::FTP.open('ftp.openbsd.org','anonymous','blah') do |ftp|
ftp.chdir('/pub/OpenBSD/4.1')
names = ftp.nlst('*')
end
p names

That will give you the names of directories _and_ files _and_ links in
the 4.1 directory.

If you want just the directories in a directory, you can do this:

require 'net/ftp'
dirs = []
Net::FTP.open('ftp.openbsd.org', 'anonymous', 'blah') do |ftp|
ftp.chdir('/pub/OpenBSD/4.1')
dirs = ftp.ls('*').select { |item| item[0,1]=~/^[l|d]/ }
end
dirs.map! { |item| item.split.last }
p dirs

That will give you just the directory and link names in the 4.1
directory (but not if they have spaces in the name).

Does that make sense at all?
Todd
 
A

Ari Brown

On Jul 17, 2007, at 8:59 PM, Todd Benson wrote:
Well there's #nlst method (using openbsd site as an example):

require 'net/ftp'
names = nil
Net::FTP.open('ftp.openbsd.org','anonymous','blah') do |ftp|
ftp.chdir('/pub/OpenBSD/4.1')
names = ftp.nlst('*')
end
p names

That will give you the names of directories _and_ files _and_ links in
the 4.1 directory.

If you want just the directories in a directory, you can do this:

require 'net/ftp'
dirs = []
Net::FTP.open('ftp.openbsd.org', 'anonymous', 'blah') do |ftp|
ftp.chdir('/pub/OpenBSD/4.1')
dirs = ftp.ls('*').select { |item| item[0,1]=~/^[l|d]/ }
end
dirs.map! { |item| item.split.last }
p dirs

That will give you just the directory and link names in the 4.1
directory (but not if they have spaces in the name).

mmmmmm yes it finally makes sense! But when you did your ls... Did
you get the listing of every file IN every directory? Because thats
what I get when I use dir.


aRi
-------------------------------------------|
Nietzsche is my copilot
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Net::FTP and ftp.dir() 0
Net::FTP list empty 1
net/ftp 3
Using Net/FTP to download a file (FTP Error 550) 0
FTP : Time problem (net/ftp) 0
newbie ftp problem 0
Net::FTP hangs 7
Net::FTP questions... 5

Members online

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,217
Latest member
IRMNikole

Latest Threads

Top