Столкнулся с проблемой нищебродского сервера, который запрещал ls -R для экономии собственных ресурсов. Т.е. опцию -R он просто игнорировал, выдавая содержимое только текущей директории. Как бороться - оказалось очень просто.
Код:
ncftpls -R -u user -p pwd -m -a -l -F ftp://ftpserv | grep "Type=file" | iconv -f Windows-1251 -t UTF-8
в качестве бонуса еще добавил конвертацию имен файлов из виндовой кодировки в нормальный UTF-8
Сама особенность в опции -m, которая, видимо, заставляет программку ncftpls самостоятельно обходить все директории. Кстати, ncftpls входит в пакет ncftp.