2016-07-12 2 views
1

bekam ich eine Liste mit Dateinamen, die die beiden folgenden Muster entsprechen:Wie kann man eine Liste mit zwei verschiedenen Musterdateien in Linux (bash) durchlaufen?

  • ist wie XXX_01.fastq
  • andere ist XXX_01_001.fastq

ich eine for Schleife schreiben werde (in bash), um alle Dateinamen mit verschiedenen Mustern zu durchlaufen, und ich muss bestimmen, welche mit den obigen Mustern übereinstimmen. Irgendwelche Hilfe dabei?

+1

In welcher Sprache? Was hast du bis jetzt gemacht? – pah

+0

in Shell-Skripten. Jetzt habe ich eine Liste erstellt, die das gesamte Suffix des Dateinamens enthält, z. xxx ohne die Nummer. –

+0

Siehe das Beispiel in meiner Antwort mit bash pattern matching. Ich denke, das ist es wonach Sie suchen. – pah

Antwort

0

Inhalt list.txt:

$ cat list.txt 
AAA_01.fastq 
AA_01_001.fastq 
BBB_01_002.fastq 
BBB_02.fastq 

Beispiel bash Musteranpassung unter Verwendung von:

for file in `cat list.txt`; do 
    if [[ $file =~ [A-Z]{3}_[0-9]{2}\.fastq || $file =~ [A-Z]{3}_[0-9]{2}_[0-9]{3}\.fastq ]]; then 
    echo "MATCH $file"; 
    fi; 
done 

Output:

MATCH: AAA_01.fastq 
MATCH: BBB_01_002.fastq 
MATCH: BBB_02.fastq 
+0

eigentlich in meiner Liste habe ich nur Namen wie AAA, BBB, AA. Also möchte ich das unterschiedliche Suffix am Ende anpassen. Einige der Dateien haben das Format _01.fastq, einige davon haben das Format _01_001, _01_002 –

Verwandte Themen