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:

[ralf@ralf delme]$ ls
dateiname1.txt
[ralf@ralf delme]$ mv dateiname{1,2}.txt
[ralf@ralf 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
[ralf@ralf delme]$ mv {datei,file}name1.txt
[ralf@ralf delme]$ ls
filename1.txt

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

filename1.txt
[ralf@ralf delme]$ mv filename{1,}.txt
[ralf@ralf 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
[ralf@ralf delme]$ mv filename.{txt,md}
[ralf@ralf 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:

[ralf@ralf delme]$ ls
filename.md
[ralf@ralf delme]$ cp {,~/dev/}filename.md
[ralf@ralf 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