Если вы хотите создать индекс FTP-сайта, то есть перечислить все подкаталоги и файлы на сайте без их фактического извлечения, вы можете сделать это:
wget -r -x --no-remove-listing --spider ftp://ftp.example.com/
где,
- -r => рекурсивный (то есть посещать подкаталоги)
- -x => принудительно создавать зеркальные подкаталоги на клиенте
- --no-remove-list => оставить файлы ".listing" в каждом подкаталоге
- --spider => посещать, но не извлекать файлы
Это создаст разреженное дерево каталогов идентичной структуры на клиенте и сервере, содержащее только файлы «.listing», показывающие содержимое (результат «ls -l») для каждого каталога. Если вы хотите переварить это в один список имен файлов с указанием пути (как вы могли бы получить из «find. -Type f»), то сделайте это в корне этого разреженного дерева каталогов:
find . -type f -exec dos2unix {} \;
( find . -maxdepth 999 -name .listing -exec \
awk '$1 !~ /^d/ {C="date +\"%Y-%m-%d %H:%M:%S\" -d \"" $6 " " $7 " " $8 "\""; \
C | getline D; printf "%s\t%12d\t%s%s\n", D, $5, gensub(/[^/]*$/,"","g",FILENAME), $9}' \
{} \; 2>/dev/null ) | sort -k4
который даст вам вывод, как
2000-09-27 00:00:00 261149 ./README
2000-08-31 00:00:00 727040 ./foo.txt
2000-10-02 00:00:00 1031115 ./subdir/bar.txt
2000-11-02 00:00:00 1440830 ./anotherdir/blat.txt
Примечание: опция «-maxdepth 999» в этом случае не нужна, я оставил ее в вызове, который я тестировал, с дополнительным ограничением: ограничить глубину дерева, о котором было сообщено. Например, если вы сканируете сайт, содержащий полные исходные деревья для нескольких проектов, например
./foo/Makefile
./foo/src/...
./foo/test/...
./bar/Makefile
./bar/src/...
./bar/test/...
тогда вам может понадобиться только набросок проектов и каталогов верхнего уровня. В этом случае вы бы указали опцию типа "-maxdepth 2".