Dosyaları indirin ve kaynakla aynı dosya yapısını oluşturun


21

İndirmek istediğim URI'lerin listesinden oluşan bir yapılandırma dosyası var. Örneğin,

  http://xyz.abc.com/Dir1/Dir3/sds.exe
  http://xyz.abc.com/Dir2/Dir4/jhjs.exe
  http://xyz.abc.com/Dir1/itr.exe

Yapılandırma dosyasını okumak ve her URL'yi kopyalamak istiyorum ancak aynı zamanda ana bilgisayardakiyle aynı dizin yapısını oluşturun. Örneğin, yapılandırma dosyasındaki ilk satır için, yerel makinemde Dir1 / Dir3 dizin yapısını (yoksa) oluşturmak ve sonra sds.exe dosyasını ... / Dir1 / Dir3 / dizinine kopyalamak istiyorum.

'Wget -i' kullanarak bir dosyadaki tüm URL'leri indirebileceğimi buldum, ancak bununla ilgili dizin yapısını nasıl oluşturabilirim

Yanıtlar:


27

Gönderen man wget:

-x, --force-dizinleri:

[...]

aksi oluşturulmuş olmasa bile bir dizin hiyerarşisi oluşturun. Örneğin wget -x http://fly.srk.fer.hr/robots.txt indirilen dosyayı fly.srk.fer.hr/robots.txt dosyasına kaydeder.


Adam tavsiyesi için teşekkürler. Kendime yardım etmeye alışmalıyım.
NGambit

Chris: Ama eğer fly.srk.fer.hr/dir1/robots.txt varsa, wget -x fly.srk.fer.hr dizinini oluşturur ve dir1 / robots.txt adlı dosyayı koyar. Ne bile alt dizinleri oluşturmak gerekir. yani robots.txt dosyasını
fly.srk.fer.hr/dir1/

@NGambit dir1/robots.txtUnix üzerinde tek bir dosya oluşturmak imkansızdır .
Chris Down

Haklısın. Kullandığım yapılandırma dosyası, işleri karıştıran dizin yollarında '/' yerine '\' (başka bir Windows tabanlı dosyadan ayrıştırıldığından) vardı. Sadece '\' yerine '/' ve "wget ​​-x -i dosya adı" bir cazibe gibi çalışıyor
NGambit

2
Bir yan not: bazen URL'deki ilk N klasörleri atlamak istersiniz, ardından şunu eklersiniz:--cut-dirs=N
tokland

16

İstediğiniz yapıyı elde etmek için -nH ve -x kullanılmasını öneririm.

Bu, ana makine adını kaldıracak ve beklenen dizin yapısını oluşturacaktır.

Örneğin

wget -x -nH http://xyz.abc.com/Dir1/Dir3/sds.exe

- 'Dir1/Dir3/sds.exe' saved [1234]

Man sayfasından:

-nH
--no-host-directories
   Disable generation of host-prefixed directories.  By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/.  This option disables such behavior.

-x
--force-directories
   ...create a hierarchy of directories, even if one would not have been created otherwise...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.