2016-06-22 4 views
0

Ich möchte meine Dateien in den Unterverzeichnissen mit dem Ordnernamen umbenennen. Meine Dateien sind wie dieses FormatUmbenennen von Dateinamen mit dem Ordnernamen, aber behalten Sie die Ziffer gleich

fastqjoin 
    un1 
     fasta 
     fastq 
    un2 
     fasta 
     fastq 

und ich möchte es ändern zu

foldername 
    un1 
     fasta 
     fastq 
    un2 
     fasta 
     fastq 

ich dieses Skript gefunden die Dateinamen der Ordnernamen verwenden ändern können, aber ich mag den regulären Ausdruck hinzufügen, so dass es kann alle Dateien in einem Skript ändern

for subdir in *; do mv $subdir/fastqjoin.un1.fasta $subdir/$subdir.un1.fasta; done; 

habe ich versucht, das Skript mit un[0-9].fast/D, un/d.fast/D ersetzen, aber keiner von ihnen arbeiten. Zum Beispiel:

f`or subdir in *; do mv $subdir/fastqjoin.un[0-9].fast/D $subdir/$subdir.un[0-9].fast/D; done;` 
+0

Zeigen Sie uns Ihre Struktur Ordner, in dem Sie die Dateien haben. –

+0

Die Ordnerstruktur ist Verzeichnis/Unterverzeichnis/Datei und mein Terminal befindet sich im Verzeichnis. – kelvinfrog

+0

Es sieht für mich so aus, als würde man den 'fastqjoin'-Ordner einfach in' foldername' umbenennen wollen. – 4castle

Antwort

2

Verwenden ${variable#fastqjoin} zu entfernen fastqjoin von Anfang an der Variablen, und eine andere Schleife, um die Dateien zu iterieren:

for subdir in *; do 
    for pth in $subdir/*; do 
     file=`basename $pth`; 
     mv $pth $subdir/$subdir${file#fastqjoin}; 
    done; 
done 
+0

Es funktioniert! Vielen Dank. – kelvinfrog

Verwandte Themen