Puncte:1

Cum efectuez o buclă pe fișierele care au același șir înainte de primul caracter de subliniere?

drapel ke

Încerc să efectuez o buclă pe Ubuntu în care concatenez două fișiere într-un singur fișier. Directorul are mii de fișiere, care vin toate în perechi care au același șir de caractere înainte de primul caracter de subliniere. De exemplu, directorul conține următoarele fișiere:

uce-1348_.nexus.phy.fasta
uce-1348_Sample1.fasta
uce-1611_.nexus.phy.fasta
uce-1611_Sample1.fasta

Am încercat să fac ceva de genul

pentru i in *_*.fasta \
do
cat $i > $i.combined.fasta
Terminat

dar acest lucru, desigur, nu funcționează, deoarece nu face fișierele combinate specifice șirului înainte de primul caracter de subliniere.Trebuie să am un fișier concatenat de uce-1348 și altul de uce-1611 (mai sunt mii de fișiere, dar acesta este un mic exemplu de ceea ce caut.

Orice ajutor ar fi apreciat. Am auzit că poți seta șiruri și modele, dar încă nu știu cum să fac asta. Mulțumesc!

bac0n avatar
drapel cn
Este important în ce ordine sunt concatenate fișierele?
Puncte:2
drapel ar

Puteți trece peste fișierele așa cum ați făcut-o, dar apoi trebuie să extrageți începutul numelui fișierului pentru a defini fișierul de ieșire.

Apoi trebuie să folosești >> pentru a adăuga la fișierul de ieșire. Dacă utilizați unul singur > va suprascrie conținutul de fiecare dată.

Deci, folosind numele de fișiere:

pentru fișier în *_*.fasta; do
    output="${file/_*}.combined.fasta"
    pisică „$fișier” >> „$ieșire”
Terminat

Expresia ${file/_*} utilizări Extinderea parametrilor Shell pentru a șterge totul după primul „_” din numele fișierului, pentru a produce numele fișierului de ieșire.

Puncte:0
drapel hr

Trebuie să faci bucla peste unu a modelelor și generați celelalte nume de fișiere folosind extinderea parametrilor

Ex.

pentru i în *_.nexus.phy.fasta; do 
  pisică „$i” „${i/.nexus.phy/Sample1}” > „${i/_.nexus.phy/.combined}”
Terminat
Puncte:0
drapel cn

Pe lângă copiere și mutare mmv poate adăuga, de asemenea, conținutul fișierului sursă la un nume țintă.

mmv -a 'uce-*_*' 'uce-#1.combined.fasta'

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.