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 04/03/2019, à 23:21

Amniote

Appliquer un script à plusieurs fichiers [RESOLU]

Bonjour,

J'ai dans mon dossier /home/lveillat quelques fichiers que voici :

mg_258.fma   
mg_3190.fma
mg_9999.fma
mg_999.fma 
mg_99.fma

Je souhaite lancer un script sur l'ensemble de ces fichiers et avoir mes résulats dans un seul fichier "concatenation.txt".

Voici la ligne de commande que j'utilise :
Phi -f mg_*.fma -t [A]

et voici le résultat que j'obtient :

Reading sequence file mg_258.fma
Found 316 sequences of length 378
Alignment looks like a valid AA alignment.
Estimated diversity is (pairwise deletion - ignoring missing/ambig): 43.9%
Found 234 informative sites.
Writing alignment of informative sites to: Phi.inf.sites
Writing list of informative sites to:      Phi.inf.list
Calculating all pairwise incompatibilities...
Done: 100.0%

Using a window size of 100 with k as 62

Calculating analytical mean and variance

     **p-Value(s)**     
       ----------

PHI (Normal):        8.16e-01

Comme vous pouvez le constater, ma ligne de commande s'applique uniquement au premier fichier de mon dossier (soit 'mg_258.fma')

Comment dois-je modifier ma ligne de commande afin d'avoir les résultats des cinq fichiers (et dans un seul fichier texte) ?

Merci d'avance !

Dernière modification par Amniote (Le 05/03/2019, à 23:20)

Hors ligne

#2 Le 05/03/2019, à 00:11

alex2423

Re : Appliquer un script à plusieurs fichiers [RESOLU]

Salut Amniote,

N'hésite pas à utiliser la balise de code (le bouton <> quand tu saisis ton texte) pour rendre plus lisible ton message.

Je pense avoir compris l'idée. Tu passes le paramètre suivant de ton script Phi : mg.*fma.
Tu as utilisé le wildcard "*" signifiant normalement n'importe quel caractère et tu te demandes pourquoi ton script n'en tient pas rigueur 

Dans ton script Phi, il faut que tu boucles par exemple avec un "for" sur un $(ls -l <paramètre>)

Hors ligne

#3 Le 05/03/2019, à 00:12

Arbiel

Re : Appliquer un script à plusieurs fichiers [RESOLU]

Bonsoir

Je ne comprends rien à ta ligne de commande, cependant

cat /dev/null 1>/tmp/resultat; for fichier in mg_*.fma; do Phi -f mg_*.fma -t [A] 1>>/tmp/resultat; done;

devrait répondre à ta question.

Explications
"cat /dev/null 1>/tmp/resultat;" crée le fichier /tmp/resultat, vide
"for fichier in mg_*.fma;" provoque l'exécution de tout ce qui se trouve entre do et done pour chacun des fichiers qui répond à mg_*.fma
"1>>/tmp/resultat" ajoute le résultat de la commande à la fin du fichier /tmp/résultat

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#4 Le 05/03/2019, à 00:59

Watael

Re : Appliquer un script à plusieurs fichiers [RESOLU]

on va être un peu sérieux maintenant.

for f in mg_*.fma; do Phi -f "$f" -t [A]; done >output.txt

et c'est tout.


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

Hors ligne

#5 Le 05/03/2019, à 07:51

pingouinux

Re : Appliquer un script à plusieurs fichiers [RESOLU]

Bonjour,
@Arbiel #3, pour info :

Pour créer un fichier vide

>/tmp/resultat

mais en procédant comme Watael en #4, c'est-à-dire redirigeant uniquement la sortie de la boucle for, il est inutile de créer le fichier avant.

Hors ligne

#6 Le 05/03/2019, à 10:31

Arbiel

Re : Appliquer un script à plusieurs fichiers [RESOLU]

C'est effectivement beaucoup mieux. Et c'est surtout exempt de toute erreur.


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#7 Le 05/03/2019, à 20:46

alex2423

Re : Appliquer un script à plusieurs fichiers [RESOLU]

Tout dépend s'il peut changer son script "Phi". Je trouverai cela plus propre de faire la boucle à l'intérieur du script.
Cela lui éviterait de retaper à chaque fois la boucle "for" dès qu'il veut lancer son script avec en paramètre une wildcard "*" (je crois que cela s'appeler comme cela)
Mais en effet on peut externaliser la boucle.

Dernière modification par alex2423 (Le 05/03/2019, à 20:47)

Hors ligne

#8 Le 05/03/2019, à 23:19

Amniote

Re : Appliquer un script à plusieurs fichiers [RESOLU]

Un grand merci à vous tous pour vos réponses !
En effet, la ligne de code de Watael correspond le plus à ce que j'attendais, même si toutes les réponses étaient justes smile

Merci encore et bonne soirée à vous !

Hors ligne