mv – Linux

closeDieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!

[mv = move] mit dem “mv”-Befehl kann man Dateien von einem Ort an einen andern verschieben bzw. wenn dies im selber Verzeichnis ausgeführt wird, eine Datei umbenennen.

eine Datei umbenennen:

ohne Wildcards:

mv data1 dateu_neu1

benennt die Datei “data1″ in “dateu_neu1″ um

mit Wildcards:

mv *tei1 datei_neu1

-> * = beliebig viele verschiedene Zeichen

mit Wildcards:

mv ?atei1 datei_neu1

-> ? = ein unbestimmter Buchstabe

Dateien verschieben:

mv *.txt old/

alle Dateien welche auf “.txt” enden werden in das Unterverzeichnis old/ verschoben

mehrere Dateien umbenennen:

!!!
mv *.htm *.html
!!!

dieser Befehl funktioniert nicht, da die Bash “*.html” als Verzeichnis interpretiert

Dieses Problem kann man z.B. wie folgt lösen:

for i in *.htm; do mv $i `basename $i .htm`.html; done

mit diesem Befehl, kann man nun alle Dateien welche auf “.htm” enden, mit der neuen Endung “.html” versehen

der ursprüngliche Dateiname welcher in der Variablen $i abgelegt wird, wird jeweils zu dem neuen Dateinamen, welcher sich aus dem “Basisnamen” (basename *1) ohne die Endung und einer neuen Endung “.html” besteht, zusammengefasst und die entsprechende Datei mittels einer “for”-Schleife verschoben

(*1) basename test.txt .txt -> test)

 

for i in *.sh; do mv $i /home/path/; done

verschiebt alle Dateien mit der Endung “.sh” nach 

/home/path

 

for i in [a-z]*; do mv $i ${i#[a-z]}; done

entfernt das erstes Zeichen von allen Dateien im aktuellen Verzeichnis.

 

for i in [a-z]*; do mv $i z${i}; done

setzt ein “z” vor jeden Dateinamen.

 

Alternativ kann man dieses Problem auch mit dem folgendem Befehl umgehen…

aptitude install mmv

installiere als erstes das Programm “mmv”

mmv -v "*.htm" "#1.html"

wie im vorherigem Beispiel werden auch hier alle Dateien welche auf “.htm” enden umbenannt und enden hinterher auf “.html”

(mit dem Parameter “-c” werden die Dateien nicht verschoben, sondern kopiert)

 

Hier noch ein Beispiel: Welches alle Bilder im aktuellen Verzeichnis um 2 erhört -> “1.jpg” wird zu “3.jpg” …

for i in `ls -r *.jpg`; do
j=$((${i%.*}+2));
echo "$i -> ${j}.${i##*.}";
done;