Wget – только получение файла .listing в каждом поддиректоре

Если я использую команду «wget -no-remove-listing -P ….. / debugdir / gnu // ftp: / gnu //», я получу файл .listing этого каталога. Но я должен пройти каждый последующий подкаталог, чтобы получить всю структуру. Есть ли способ получить файл .listing из всех (под) каталогов с помощью одной команды?

Кроме того, я заметил, что файл «index.html» автоматически генерируется после каждого доступа. Есть ли способ подавить это поведение?

Дело в том, что я всегда обнаружил, что обработка Bash медленная, но после некоторого профилирования я обнаружил, что наибольшая задержка заключается в получении каждого файла .listing из последующих подкаталогов. Пример: проверка определенных расширений файлов в дереве GNU занимает около 320 секунд, из которых 290 секунд предназначены для обработки вышеуказанной команды wget.

С уважением, Франс

Если вы хотите создать индекс FTP-сайта, то есть перечислить все подкаталоги и файлы на сайте, не загружая их, вы можете сделать это:

wget -r -x --no-remove-listing --spider ftp://ftp.example.com/ 

где,

  • -r => рекурсивный (т. Е. Посещать подкаталоги)
  • -x => создавать подкаталоги принудительного зеркала на клиенте
  • –no-remove-listing => оставить «.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 

NB: опция «-maxdepth 999» не нужна в этом случае, я оставил ее в вызове, который я тестировал, который имел дополнительное ограничение: чтобы ограничить глубину сообщаемого дерева. Например, если вы просматриваете сайт, содержащий полные исходные деревья для нескольких проектов, например

 ./foo/Makefile ./foo/src/... ./foo/test/... ./bar/Makefile ./bar/src/... ./bar/test/... 

То вам может понадобиться только контур проектов и каталогов верхнего уровня. В этом случае вы должны указать опцию «-maxdepth 2».

  • Скопировать весь сайт, включая PHP и SQL?
  • Постоянная повторная попытка возобновить загрузку с помощью завитка
  • Как загрузить файлы Dropbox с помощью команды wget?
  • wget / curl большой файл с Google Диска
  • Как загрузить весь (активный) форум phpbb?
  • Пакетный скрипт получает html-сайт и анализирует контент (без wget, curl или другого внешнего приложения)
  • Завиток не может соединяться; Wget может
  • Использование wget для рекурсивного извлечения каталога с произвольными файлами в нем
  • Где на моем компьютере Wget загрузил это изображение?
  • Загрузите ВСЕ папки, подфайлы и файлы с помощью Wget
  • Wget - сложность без учета доменов и каталогов
  • Давайте будем гением компьютера.