Ganz gleich ob Systemadministrator oder Gelegenheits-User: Die Arbeit mit Dateien und Verzeichnissen gehört zu den grundlegendsten Dingen, die man auf Kommandozeilen-Ebene beherrschen sollte.
Im Folgenden haben wir die am häufigsten verwendeten Befehle zusammengestellt und kurz erklärt.
Dateien auflisten, suchen und sortieren
Alle Dateien und Verzeichnisse auflisten (inklusive versteckter Dateien; findet also beispielsweise auch .htaccess und andere Systemdateien, die mit einem Punkt beginnen):
ls -la
Dasselbe, aber in grün… und rot und blau – nämlich farblich aufgehübscht und so übersichtlicher:
ls -laG
Alle Dateien mit einer bestimmten Endung (z.B. .jpg) finden:
ls -la *.jpg
Das Zeichen * dient als Platzhalter für ein beliebiges Zeichen (kein, ein oder mehrere). Der Platzhalter ? steht für genau ein beliebiges Zeichen:
ls -la quelle?.jpg
Das obige Beispiel findet nur die Datei quellen.jpg (quelle.jpg hingegen nicht, dafür müsste man den Platzhalter * verwenden, der auch auf „kein Zeichen“ passt).
Dateien und Verzeichnisse nach Datum der Erstellung sortieren:
ls -laU
Dateien und Verzeichnisse nach Datum des letzten Zugriffs sortieren:
ls -lau
Dateien und Verzeichnisse nach Datum der letzten Änderung sortieren:
ls -lat
Dateien kopieren und verschieben
Es gibt zwei grundsätzlich verschiedene Möglichkeiten, Dateien zu bewegen: Kopieren und Verschieben.
Beim Kopieren bleibt das Original erhalten; es wird immer ein gleichwertiges Duplikat erstellt. Beim Verschieben wird das Original gelöscht; die neu erzeugte Datei ist das einzig verbliebene Exemplar.
Datei in das darüberliegende Elternverzeichnis kopieren:
cp datei.ext ../
Datei in ein Verzeichnis mittels absoluter Pfadangabe kopieren:
cp datei.ext /var/hierhin/
Datei im gleichen Verzeichnis unter einem anderen Namen duplizieren (eine bereits vorhandene Datei wird ohne vorherige Rückfrage überschrieben):
cp datei.ext duplikat.ext
Datei an einen anderen Ort kopieren und gleichzeitig umbenennen:
cp datei.ext /var/hierhin/datei-kopie.ext
Datei in das darüberliegende Elternverzeichnis verschieben:
mv datei.ext ../
Datei in ein Verzeichnis mittels absoluter Pfadangabe verschieben:
mv datei.ext /var/hierhin/
Datei an einen anderen Ort verschieben und gleichzeitig umbenennen:
mv datei.ext /var/hierhin/datei-backup.ext
Dateien umbenennen
Eine Sonderform des Verschiebens einer Datei mit dem mv-Befehl ist das Umbenennen. Existiert bereits eine Datei gleichen Namens, wird diese vorher gelöscht.
mv alter-name.ext neuer-name.ext
Dateien löschen
Dateien oder ganze Verzeichnisse (einschließlich deren Inhalt) ohne Rückfrage entfernen:
rm -rf datei.ext
rm -rf datei.*
rm -rf /var/beispiel/alt/
Der Parameter -r löscht komplette Verzeichniszweige, -f verhindert weitestgehend Rückfragen zum Löschen (ignoriert also gesetzte Dateiberechtigungen).
Dateitypen bestimmen
Üblicherweise wird der Dateityp anhand der Dateiendung ermittelt. Blöd nur, wenn eine Dateiendung mehrdeutig ist (z.B. definiert .jpg als Norm viele verschiedene Verfahren zur Speicherung von Bilddaten).
Besonders bei Textdateien steht man häufig vor dem Problem, den verwendeten Zeichensatz herausfinden zu müssen. Da heißt es dann probieren, probieren, probieren – oder folgenden Befehl tippen:
file was-bin-ich.txt
file foto.jpg
Der file-Befehl versucht durch ein mehrstufiges Verfahren das exakte Format zu ermitteln.
So spezifiziert es das für diesen Beitrag verwendete Bild nicht nur als simples JPEG, sondern liefert als Ausgabe: JPEG image data, JFIF standard 1.01, resolution (DPI), density 300×300, segment length 16, baseline, precision 8, 678×381, frames 3.
Das geniale an file ist aber, dass es die Dateien selbst dann noch (meistens) richtig klassifiziert, wenn die Dateiendung fehlt oder eine ungültige ist.
Inhalt von Textdateien durchsuchen
Mit dem grep-Befehl lassen sich Dateien (oder auch der Inhalt ganzer Verzeichnisse) nach einem bestimmten Muster durchsuchen:
grep -n "datei.ext" -e "findmich"
grep -n "*.html" -e "findmich"
grep -nr "/var/quelle/" -e "findmich"
Der Parameter -n gibt die Zeilennummer des Treffers aus und der Parameter -e erlaubt die Verwendung von regulären Ausdrücken im Suchmuster. Wie üblich bei Shell-Kommandos steht -r für „rekursiv“, also für das Durchsuchen des gesamten Verzeichniszweigs.
Länge des Inhalts von Textdateien ermitteln
Mit dem wc-Befehl kann die Anzahl von Zeilen, Wörtern und Zeichen errechnet werden:
wc datei.txt
Verzeichnisse
Ein neues Verzeichnis erstellen:
mkdir neues-verzeichnis
Einen neuen Verzeichnisast erstellen (noch nicht vorhandene Ordner werden automatisch hinzugefügt):
mkdir -p hier/sind/wir/jetzt/
Anmerkung zur Arbeit mit Verzeichnissen
Unix behandelt Verzeichnisse und Dateien in technischer Hinsicht nahezu identisch.
Alle in diesem Tutorial angeführten Befehle zum Umbenennen, Kopieren, Verschieben und Löschen von Dateien können deshalb analog auch auf Verzeichnisse angewendet werden.
Das war’s…
… jetzt sind erst einmal Sie dran. Wir wünschen viel Spaß beim Ausprobieren! 🙂
Autor: Tobias Eichner | Datum der Veröffentlichung: Januar 2018
Wichtig: Bitte beachten Sie die Nutzungsbedingungen und rechtlichen Hinweise für diesen Beitrag!