GitHub - BitBucket
Решил написать такой, чтобы рассмотреть, что есть на некоторых наших богатых ftp-серверах, без подключения..
Долго извращался с bash'ем, пока не дошел до переменной IFS :)
В общем вот скрипт:
get_listing:
#!/bin/bash if [ "$1" == "" ] then echo "Usage: `basename $0` server" exit fi server=$1 base=$PWD IFS=$'\n' function get_listing() { local prev_dir=$PWD local url= if [ "$1" != "" ] then url=$1 echo "Creating dir: $2" mkdir "$2" cd "$2" fi echo "Retreiving file list $url" curl ftp://$server$url/ 2 > /dev/null > listing lst=`cat listing | grep "^d" | grep -v "\.$" | xargs -I'{}' $base/get_fname "{}"` for f in $lst do get_listing "${url}/$f" "$f" done cd $prev_dir } get_listing
get_fname:
#!/bin/bash echo `expr match "$1" '\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\\S*\\s*\(.*\)'`
Как засунуть get_fname в сам скрипт, так и не понял... Пробовал $() внутри ``, и наоборот, и по всякому..
Это произведение доступно по лицензии Creative Commons Attribution (Атрибуция) 3.0 Непортированная.