2016-11-30 2 views
0

Ich muss mehrere Dateien umbenennen, ohne den Dateinamen (Basisname/Zeichenfolgenname) der Datei zu kennen.Stapelumbenennung mehrerer Dateien derselben Erweiterung

Ich habe versucht, mit:

for i in $(ls /Users/Destiny/Desktop/Index/*.ebwt); 
do 
    mv -v "$i" "${i/hsa/hsa.genome.V86C}"; ## works when i know the string to replace 
done 

aber was, wenn Sie nicht den Dateinamen (string name) wissen?

Vor Umbenennungs: hsa.1.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt

Nach Umbenennungs: hsa.genome.V86C.1.ebwt hsa.genome .V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.4.ebwt

+0

dann benennen Sie es in a um Zufallszahl: D – fedorqui

+0

Worum benennst du es? Das gleiche, aber mit einem anderen Suffix? – 123

+0

Ich frage das, weil ich nur die Erweiterung der Datei kenne und ich muss mit soemthing umbenennen, um es in verschiedenen Bash-Skript zu verwenden. – unique379

Antwort

0

Sie könnten etwas mit einer Suche in Ihrem Verzeichnis tun. Und wenn sie alle die gleiche Ausdehnung haben, dann könnte es so etwas wie unten mit Ihrem Umzug sein, die Sie derzeit haben:

find /Users/Destiny/Desktop/Index -type f -name "*.ebwt" | while read file; 
do 
mv -v "$file" "${file/hsa/hsa.genome.V86C}"; 
done 

Dies es innerhalb des aktuellen Verzeichnisses umbenannt wird, und wenn Sie wollen, dass es zu einem anderen bewegen später Verzeichnis auf der ganzen Linie, könnten Sie mit diesem zweiten Argument wie Basisnamen umgeben zu machen bewegen einfacher:

"/SomeDirectory/$(basename ${file/hsa/hsa.genome.V86C})" 

Sie auch ein -maxdepth 1 nach dem Verzeichnis setzen könnten Sie finden wollen, wenn Sie es nicht wollen, in die rekursive sein Suchen Sie

Verwandte Themen