2016-07-25 36 views
2

Ich werde viele Dateien von einem Server mit wget herunterladen. Aber die Dateien sollten nur gespeichert werden, wenn der Dateiname in einer bestimmten Liste ist. Andernfalls sollte wget aufhören, diese Datei zu bekommen und die nächste zu starten.Shell-Skript - Dateien mit wget nur herunterladen, wenn der Dateiname in meiner Liste ist

Ich habe versucht, die folgenden:

#!/bin/bash 

etsienURL="http://www.etsi.org/deliver/etsi_en" 
etsitsURL="http://www.etsi.org/deliver/etsi_ts" 

listOfStandards=("en_302571" "en_3023630401" "en_3023630501" "en_3023630601" "en_30263702" "en_30263703" "en_302663" "en_302931" "ts_10153901" "ts_10153903" "ts_1026360501" "ts_1027331" "ts_10286801" "ts_10287103" "ts_10289401" "ts_10289402" "ts_102940" "ts_102941" "ts_102942" "ts_102943" "ts_103097" "ts_10324601" "ts_10324603") 

wget -r -nd -nc -e robots=off -A.pdf $etsienURL 
wget -r -nd -nc -e robots=off -A.pdf $etsitsURL 
for file in *.pdf 
    do 
     relevant=false 
     for t in "${listOfStandards[@]}" 
      do 
       if [[ $(basename "$file" .pdf) == *"$t"* ]] 
       then 
        relevant=true 
        break 
       fi 
      done 
     if [ $relevant == false ] 
     then 
      rm "$file" 
     fi 
    done 

Mit diesem Code werden alle Dateien heruntergeladen werden. Nach dem Download überprüft das Skript, ob der Dateiname oder ein Teil davon in der Liste enthalten ist. Andernfalls löscht das Skript die Datei. Aber das kostet viel Speicherplatz. Ich werde nur eine Datei herunterladen, wenn der Dateiname einen enthält, wenn die Liste Elemente enthält.

Vielleicht kann jemand helfen, eine Lösung zu finden.

Antwort

0

Die Lösung gefunden. Ich habe das --no-parent-Tag für wget vergessen.