Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/12/2012, à 15:38

Sauce

Wget

Bonjour,

Je suis une étudiante en bio (très débutante) et on nous demande de récupérer des séquences donc j'ai créé un script en shell avec le terminal. Or j'ai un léger petit soucis de téléchargement avec wget. dans notre script j'ai écrit,

IDS=$(URL(bonne))
for ID to $IDS
do
      wget "$IDS/"
done

quand je l'execute, wget nous dit répertoire "URL(bonne)" inexistante.

Mecri d'avance pour le ou les réponses smile

Dernière modification par Sauce (Le 20/12/2012, à 15:42)

Hors ligne

#2 Le 20/12/2012, à 15:49

nesthib

Re : Wget

Si ton script se limite à ce que tu écris, ça n'a pas beaucoup de sens.

IDS=$(URL(bonne))

Instancie la variable IDS avec le retour de la commande URL(bonne), ce qui sans contexte n'existe pas.

Précise donc en détail ce que tu cherches à faire si tu veux que l'on puisse t'aider.

NB. wget peut prendre plusieurs arguments en une seule fois, il se peut que tu n'aies besoin que d'une seule ligne de commande. Donne donc le plus de détails possible pour que l'on te donne la meilleure solution.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#3 Le 20/12/2012, à 15:52

Sauce

Re : Wget

Ok voila mon script comme je l'ai écris
#!/bin/bash

echo "c'est partit"


REFS=$(wget -qO essai1 "ftp://ftp.ensembl.org/pub/release-69/fasta/" | more essai1 | grep "Oct" | sed 's/2012 Oct 16 [12][0123456789]:[012345][0123456789]  Répertoire   <a href="//' | sed -r 's/\/">.{1,}//' | tr -d '  ' | sed 's/:21//')


echo "téléchargement...ok"


    for REF in $REFS
    do
        wget -q "$REF/ncrna/"
    done

echo "téléchargements des ncRNA...o"

mkdir ~/bin/bonjour
mv index.html* ~/bin/bonjour

echo "déplacement fichier effectué"

cd ~/bin/bonjour

FTPS=$(grep "\.ncrna\." index.html* | tr -d ' ' | sed -r 's/index.{1,}href="//' | sed -r 's/">.{1,}//' | sed 's/"//' | sed 's/:21//')



      for FTP in $FTPS
      do
               wget -q "$FTP/"
      done



echo " dernier téléchargement"

Hors ligne

#4 Le 20/12/2012, à 16:13

NotF0und

Re : Wget

Explique nous ce que tu veux faire avec précision stp, j'ai peur de ne pas trop comprendre ...
Tu veux récupérer tous les fichiers contenus dans les différents dossiers qui portent le nom ncRNA ? C'est bien ça ?

Dernière modification par NotF0und (Le 20/12/2012, à 16:14)

Hors ligne

#5 Le 20/12/2012, à 16:26

Sauce

Re : Wget

Je cherche à récupérer des séquences de ncRNA via la banque de FTP de la DataBank Ensembl.
La DB Ensembl est organisée comme ça :
pub(lications)
  release-69 (dernière mise à jour)
     fasta (format)
        espèce (ex : homo_sapiens)
            cdna
            dna
            pep
            ncrna
                README
                CHECKSUMS
                ncRNA

J'ai des problèmes avec la commande wget et l'enregistrement des résultats.

Après ça je suis supposée récupérer les rRNA au milieu de tous les ncRNA à l'intérieur des fichiers au formart .fa (fasta).
Mais j'en suis pas encore là ^^.

Hors ligne

#6 Le 20/12/2012, à 16:39

NotF0und

Re : Wget

Ok je vois, ne bougez pas je vais refaire votre script wink

Hors ligne

#7 Le 20/12/2012, à 16:56

NotF0und

Re : Wget

Voila ce que je viens de faire, j'espère que j'avais bien compris votre besoin. J'ai rajouté quelques petites astuces pour que ce script soit plus "intelligent". Il vous demandera par exemple le nom du dossier a créer.
Vous pouvez bien évidemment le modifier à votre guise !!

#!/bin/bash

echo "[!] Script launch"

REFS=$(wget -qO essai1 "ftp://ftp.ensembl.org/pub/release-69/fasta/" | more essai1 | grep "Oct" | cut -b 44-1000 | sed 's/2012 Oct 16 [12][0123456789]:[012345][0123456789]  Répertoire   <a href="//' | sed -r 's/\/">.{1,}//' | tr -d '  ' | sed 's/:21//')


echo "[!] Telechargement en cours"
echo -e "[!] Ceci peut prendre quelques minutes ... \n"

for REFS in $REFS
do
	#echo "Dossier du ftp actuel : $REFS"  #A decommenter si vous voulez voir dans quel dossier vous etes 
	wget -q "$REFS/ncrna/*.ncrna.fa*"
done

#Création du dossier
read -p "[?] Saisir le dossier a creer : " NEW_DOSS
if [[ -d $NEW_DOSS ]]
then
	echo -e "[!] Le dossier existe déjà \n"
else
	mkdir ~/bin/$NEW_DOSS
	echo -e "\n[+] Creation du dossier effectué"
fi

#Deplacement des fichiers
if [[ ! -e "*.ncrna.fa*" ]]
then
	echo "[!] Aucun fichier .ncrna.fa trouve"
else
	echo "[+] Deplacement des fichiers .ncrna dans le dossier $NEW_DOSS"
	mv *.ncrna.fa* ~/bin/$NEW_DOSS
	echo "[+] Deplacement des fichiers effectue"
fi

#Changement de repertoire
cd ~
cd ~/bin/$NEW_DOSS
echo "Vous etes maintenant dans votre dossier $NEW_DOSS"

N'hésitez pas à poser des questions au besoin smile

Cordialement,
Notfound

Dernière modification par NotF0und (Le 20/12/2012, à 16:56)

Hors ligne

#8 Le 05/01/2013, à 17:44

René-aristide

Re : Wget

Bonjour,

Merci pour votre réponses, cela m'a beaucoup aidé. Cependant je voulais savoir comment utiliser grep afin d'avoir le même résultat qu'avec -A parce je n'ai jamais utilisé la commande -A?
Cordialement.

Hors ligne

#9 Le 05/01/2013, à 19:57

xavier4811

Re : Wget

Bonjour,

grep n'est pas le meilleur outil pour ce travail.
Est ce que la création du fichier essai1 et le déplacement de tous les fichiers téléchargés est nécessaire ?
Autant tout copier au bon endroit directement.
Le changement de dossier en fin de script ne peut fonctionner qu'en utilisant la méthode du "dot sourcing"

$ . ./monscript.sh
#!/bin/bash

echo "[!] Script launch"
S_URL="ftp://ftp.ensembl.org/pub/release-69/fasta/"
REFS=$(curl -m 10 -s $S_URL | awk -v s_url="$S_URL" '/Oct/ { print s_url $9 }')

#Création du dossier
read -p "[?] Saisir le dossier a creer : " NEW_DOSS
if [[ -d ~/bin/$NEW_DOSS ]]
then
	echo -e "[!] Le dossier existe déjà \n"
else
	mkdir ~/bin/$NEW_DOSS
	echo -e "\n[+] Creation du dossier effectué"
fi

echo "[!] Telechargement en cours"
echo -e "[!] Ceci peut prendre quelques minutes ... \n"

for REFS in $REFS
do
	# echo "Dossier du ftp actuel : $REFS"  #A decommenter si vous voulez voir dans quel dossier vous etes 
	wget -q -P ~/bin/$NEW_DOSS "$REFS/ncrna/*.ncrna.fa*"
done

#Changement de repertoire
cd ~/bin/$NEW_DOSS
echo "Vous etes maintenant dans votre dossier $NEW_DOSS"

Hors ligne