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 18/02/2017, à 19:48

GuillaumeG

Script Unzip et concaténage

Bonjour,

Débutant en bash, je souhaiterai écrire un script dont le but serait de m'aider à traiter mes données de séquençage.
En gros le prestataire me fournit un gros fichier .zip qui contient plein de fichier différents, mon but c'est de récupérer uniquement les fichier .fas et de les concaténer dans un seul gros fichier fas
J'ai donc créer un dossier de sortie (Sortie) pour y mettre le gros fichier concaténé .fas, un dossier où y mettre le fichier zip obtenu sur le site du prestataire et un dossier temporaire où j'envoie le contenu du zip, contenu temporaire qui doit être supprimé à l'issu du script.

Voici ce que j'ai commencé à écrire, mais malheureusement rien dans le fichier .fas de sortie, et le contenu temporaire ne se supprime pas

#Script de concaténage de fichier FAS
unzip /home/fred/Bureau/DossierDepot/*.zip -d /home/fred/Bureau/DossierDepot/Sortie
cat /home/fred/Bureau/DossierDepot/Sortie/*.fas > /home/fred/Bureau/DossierDepot/Sortie/NouvelleSequence.fas | cp /home/fred/Bureau/DossierDepot/Sortie/NouvelleSequence.fas /home/fred/Bureau/sortie/NouvelleSequence.fas
rm /home/fred/Bureau/DossierDepot/Sortie/*.*

J'imagine que ceci est très basique pour la plupart d'entre vous, excusez donc les bourdes d'un débutant

Merci d'avance à tous

Hors ligne

#2 Le 18/02/2017, à 21:04

Watael

Re : Script Unzip et concaténage

salut,

#Script de concaténation de fichiers FAS
bureau=/home/fred/Bureau
depot=$bureau/DossierDepot
sortieDepot=$depot/Sortie
sortieBureau="$bureau/sortie"

mkdir -p "$sortieDepot"
mkdir -p "$bureau/sortie"

unzip "$depot"/*.zip -d "$sortieDepot"
cat "$sortieDepot"/*.fas > "$sortieDepot/NouvelleSequence.fas"
mv "$sortieDepot/NouvelleSequence.fas" "$sortieBureau/"
rm "$sortieDepot"/*.*
ls "$sortieBureau/NouvelleSequence.fas"

comme ça ?

Dernière modification par Watael (Le 18/02/2017, à 21:05)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#3 Le 18/02/2017, à 21:06

pingouinux

Re : Script Unzip et concaténage

Bonsoir,
Voici un petit essai qui devrait éclairer ta lanterne

# Création du fichier .zip
for i in fas1 fas2 fas3;do echo "$i" >"$i.fas";done
mkdir -p ./DossierDepot/Sortie ./sortie
zip ./DossierDepot/fichier.zip *.fas

# Extraction et ménage
unzip ./DossierDepot/fichier.zip -d ./DossierDepot/Sortie
cat ./DossierDepot/Sortie/*.fas >./sortie/NouvelleSequence.fas
rm ./DossierDepot/Sortie/*

Édité : Je me suis fait devancer
La principale différence avec la solution de Watael est que j'écris directement NouvelleSequence.fas dans le bon répertoire, pour éviter de le transférer ensuite.

Dernière modification par pingouinux (Le 18/02/2017, à 21:13)

Hors ligne

#4 Le 18/02/2017, à 21:54

GuillaumeG

Re : Script Unzip et concaténage

Merci à vous deux, il me reste beaucoup de choses à apprendre je pense
Y a t il une importance quant au placement du script ? dois je le mettre sur le bureau ou n'importe où ?
Malheureusement en utilisant vos scripts, je n'obtiens toujours de résultat, bien sur utilisant mon ordi perso, j'ai remplacé le chemin du répertoire (j'ai remplacé fred par guillaume)

Pour pingouinux voici ce que j'obtiens :
guillaume@guillaume-TP300LD:~/Bureau$ bash scriptSequence.sh
scriptSequence.sh: ligne 10: Erreur de syntaxe : fin de fichier prématurée

Pour Watael , il ne semble pas trouver le fichier Zip qui est pourtant bien placé dans le dossier DossierDepot
/*.zip.ZIP.ot /home/guillaume/Bureauillaume/Bureau

No zipfiles found.
: Aucun fichier ou dossier de ce typeillaume/Bureau
mv: impossible d'évaluer «/home/guillaume/Bureau\r/DossierDepot\r/Sortie\r/NouvelleSequence.fas»: Aucun fichier ou dossier de ce type
rm: impossible de supprimer «/home/guillaume/Bureau\r/DossierDepot\r/Sortie\r/*.*\r»: Aucun fichier ou dossier de ce type
: Aucun fichier ou dossier de ce typelaume/Bureau


J'ai peut être tout simplement fait une bête erreur qui font que vos scripts ne fonctionne pas, désolé si c'est le cas

Hors ligne

#5 Le 18/02/2017, à 22:29

Watael

Re : Script Unzip et concaténage

tu écris ton script sur Windows ?
alors, il faut penser à le convertir au format UNIX avant de l'exécuter.

l'emplacement du script n'a pas d'importance pourvu que les chemins soient absolus (indiqués depuis la racine du système de fichier : /).

utilise les balise pour poster du code, stp.
fais un copier/coller de ton script, et des messages d'erreur.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#6 Le 18/02/2017, à 22:48

GuillaumeG

Re : Script Unzip et concaténage

Non pas de windows, il est écrit sous ubuntu

Voici ce que ça donne :

#Script de concaténation de fichiers FAS
bureau=/home/guillaume/Bureau
depot=$bureau/DossierDepot
sortieDepot=$depot/Sortie
sortieBureau="$bureau/sortie"

mkdir -p "$sortieDepot"
mkdir -p "$bureau/sortie"

unzip "$depot"/*.zip -d "$sortieDepot"
cat "$sortieDepot"/*.fas > "$sortieDepot/NouvelleSequence.fas"
mv "$sortieDepot/NouvelleSequence.fas" "$sortieBureau/"
rm "$sortieDepot"/*.*
ls "$sortieBureau/NouvelleSequence.fas"

et le résultat

guillaume@guillaume-TP300LD:~/Bureau$ bash scriptSequence2.sh
/*.zip.ZIP.ot /home/guillaume/Bureauillaume/Bureau

No zipfiles found.
: Aucun fichier ou dossier de ce typeillaume/Bureau
mv: impossible d'évaluer «/home/guillaume/Bureau\r/DossierDepot\r/Sortie\r/NouvelleSequence.fas»: Aucun fichier ou dossier de ce type
rm: impossible de supprimer «/home/guillaume/Bureau\r/DossierDepot\r/Sortie\r/*.*\r»: Aucun fichier ou dossier de ce type
: Aucun fichier ou dossier de ce typelaume/Bureau

Hors ligne

#7 Le 18/02/2017, à 23:03

Watael

Re : Script Unzip et concaténage

/home/guillaume/Bureau\r

ce \r indique un format DOS.

quel éditeur utilises-tu ?

ajoute un

ls "$depot"/*.zip

avant l'unzip.

Dernière modification par Watael (Le 18/02/2017, à 23:05)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#8 Le 18/02/2017, à 23:13

GuillaumeG

Re : Script Unzip et concaténage

J'utilise gedit, je ne comprends pas, ou alors ça a du transiter momentanément sur un bloc note windows, du coup j'ai créé un nouveau document sur mon pc perso et avec la commande supplémentaire ça fonctionne ! quelle sa fonction ?
Merci beaucoup en tout cas !

Hors ligne

#9 Le 18/02/2017, à 23:14

Compte anonymisé

Re : Script Unzip et concaténage

La version simplifiée du script de Watael et sans dossier temporaire (marche que si il n'y a qu'une archive dans le DossierDepot)

sortieBureau="~/Bureau/sortie"

mkdir -p "$sortieBureau"

unzip -p "~/Bureau/DossierDepot/*.zip" "*.fas" > "$sortieBureau/NouvelleSequence.fas"

#10 Le 19/02/2017, à 08:30

pingouinux

Re : Script Unzip et concaténage

@Anonyme68 #9 :
Effectivement, c'est encore plus simple avec unzip -p (que je ne connaissais pas).
Et s'il y a plusieurs archives, tu as raison, les " " sont impératifs : "./DossierDepot/*.zip"

Hors ligne