Mastodon
Zuletzt aktualisiert am

Kopieren für Schreibfaule

Ralf Hersel
Ralf Hersel Linux

Kopieren oder Umbenennen von Dateien im Terminal geht auch einfacher.

Da habt ihr mal wieder eine Flatpak-Datei mit einem ellenlangen Dateinamen heruntergeladen und möchtet diesen umbenennen oder die Datei kopieren. Wer das im Terminal macht, tippt den Dateinamen zweimal ein. Doch auch ohne Zusatzwerkzeuge bieten die Bordmittel Möglichkeiten, um die Arbeit zu erleichtern.

Angenommen, ihr habt in irgendeinem Verzeichnis die Datei dateiname1.txt liegen. Nun möchtet ihr diese Datei umbenennen oder kopieren. Normalerweise macht man das so:

  • Umbenennen: mv dateiname1.txt dateiname2.txt
  • Kopieren: cp dateiname1.txt dateiname2.txt

In der Regel tippt man dabei den Dateinamen (zumindest teilweise) doppelt ein. Dabei geht das viel einfacher, wie ihr gleich lesen werdet.
Da der vorgestellte Tipp sowohl für mv, als auch für cp (und viele andere Befehle) funktioniert, nenne ich hier nur jeweils ein Beispiel. In der vereinfachten Variante für Schreibfaule sieht das oben gezeigte Beispiel so aus:

[ delme]$ ls
dateiname1.txt
[ delme]$ mv dateiname{1,2}.txt
[ delme]$ ls
dateiname2.txt

Die geschweifte Klammer wirkt wie ein Replace im Text des Dateinamens, wobei 1 durch 2 ersetzt wird. Das funktioniert mit beliebigen Positionen und Längen, wie man im nächsten Beispiel sieht:

dateiname1.txt
[ delme]$ mv {datei,file}name1.txt
[ delme]$ ls
filename1.txt

Auch leere Strings können verwendet werden. Hier wird die 1 in der umbenannten Datei durch Nichts ersetzt:

filename1.txt
[ delme]$ mv filename{1,}.txt
[ delme]$ ls
filename.txt

Wie bekannt ist, kommt der Dateiendung unter Linux keine besondere Bedeutung zu. Deshalb kann auch dieser Namensbestandteil ersetzt werden:

filename.txt
[ delme]$ mv filename.{txt,md}
[ delme]$ ls
filename.md

Beim Umbenennen von Dateien mag es ja angehen, dass man im selben Verzeichnis bleibt. Wer eine Datei kopiert, möchte die Kopie in der Regel in einem anderen Verzeichnis sehen. Dazu wendet ihr dasselbe Verfahren auf den Dateipfad an:

[ delme]$ ls
filename.md
[ delme]$ cp {,~/dev/}filename.md
[ delme]$ ls ~/dev/file*
/home/ralf/dev/filename.md

Was passiert hier? Mit {,~/dev/} wird das Quellverzeichnis (in dem ihr euch befindet) durch das Verzeichnis ~/dev/ ersetzt. Die ganze Magie nennt sich Brace Expansion, was wiederum ein Unterkapitel der Shell Expansion ist. Bevor jetzt die Bash-Gurus aufheulen, weil ich das Thema Expansion hier nur in Bruchstücken aufgegriffen habe; mir ging es nur um den Anwendungsfall, in dem beim Kopieren und Umbenennen diese Technik einfach und verständlich eingesetzt werden kann.

Dieser Artikel von Ralf Hersel erschien zuerst auf gnulinux.ch

https://gnulinux.ch/kopieren-fuer-schreibfaule

 

Comments