Lo típico es usar el comando ls que tiene muchisimas opciones, pero su uso normal es:

Otra manera es usar el comando find sin parámetros:

Hoy he aprendido una nueva: tree. ¿Quién necesita entorno gráfico? jejeje

Porque no todo en la vida va a ser SIG Libre...
En python3 sería:
A menudo hay que acceder a un ftp y bajarse gran número de ficheros con un determinado nombre de diferentes directorios. Automatizar este proceso puede ser bastante útil en muchos casos. Usar un cliente FTP gráfico no suele ser de ayuda en estos casos. Los clientes FTP en línea de comandos son interactivos por lo que no se pueden realizar scripts con ellos, más allá de ejecutar una lista de comandos predefinida.
Este simple script se conecta a un servidor, se posiciona en la carpeta 'CATASTRO', y se accede a todos los directorios con profundidad '1' guardando los ficheros que interesan, en este caso shapefiles llamados MASA, en una carpeta local.
#!/usr/bin/python # DESCRIPTION: Python script that connects to a FTP server and # gets some Shapefiles from 'CATASTRO' folder and subfolders # AUTHOR: Nacho Uve # DATE : May 2008 # LICENSE: GPL2 or greater from ftplib import FTP ftp = FTP('server.com'); ftp.login(user='myuser', passwd='mypassword') ftp.cwd("CATASTRO"); # OPTION: To get a 'ls -l' list # dirs = [] # # Used a callback to 'dirs' # ftp.dir(dirs.append) dirs = ftp.nlst() for row in dirs: print row ftp.cwd(row) # Save shapefiles in the local machine with the first word of the folder as filename ftp.retrbinary('RETR MASA.SHP', open(row.split()[0]+'.shp','wb').write) ftp.retrbinary('RETR MASA.SHX', open(row.split()[0]+'.shx','wb').write) ftp.retrbinary('RETR MASA.DBF', open(row.split()[0]+'.dbf','wb').write) ftp.cwd('..') ftp.quit()