WMP Sites

BASH-Befehl: Dateien auf Existenz prüfen

Lukas Fuchs vor 1 Tag DevOps & Deployment 3 Min. Lesezeit

Prüfung auf Existenz einer Datei mit dem Befehl [

Wenn du prüfen möchtest, ob eine Datei existiert, kannst du den Befehl [ verwenden. Dieser Befehl nimmt einen Pfad zu einer Datei als Argument und gibt einen Exit-Status zurück:

  • 0, wenn die Datei existiert
  • 1, wenn die Datei nicht existiert

Syntax:

[ -f /Pfad/zur/Datei ]

Beispiel:

[ -f /home/benutzer/datei.txt ]

Fragen und Antworten:

Wie kann ich den Exit-Status des Befehls [ überprüfen?

Den Exit-Status eines Befehls kannst du mit dem Befehl echo $? abfragen. Dieser Befehl gibt den Exit-Status des zuletzt ausgeführten Befehls zurück.

Was passiert, wenn der Pfad zur Datei falsch ist?

Wenn der Pfad zur Datei falsch ist, gibt der Befehl [ den Exit-Status 1 zurück.

Welche Sonderzeichen sind im Pfad zur Datei zulässig?

Im Pfad zur Datei sind alle Zeichen zulässig, außer dem Zeilenumbruch.

Kann ich Platzhalter im Pfad zur Datei verwenden?

Ja, du kannst Platzhalter im Pfad zur Datei verwenden, um mehrere Dateien auf einmal zu prüfen. Beispielsweise prüft der folgende Befehl, ob eine Datei mit dem Namen datei.* existiert:

[ -f /home/benutzer/datei.* ]

Verwendung von Platzhaltern für die Dateibenennung

Platzhalterzeichen ermöglichen es dir, bei der Prüfung auf die Existenz einer Datei eine ganze Gruppe von Dateien anhand eines allgemeinen Namensmusters zu berücksichtigen. Dies ist nützlich, wenn du dir nicht sicher bist, wie die genaue Dateibenennung lautet, oder wenn du eine Reihe ähnlicher Dateien prüfen möchtest.

Globale Platzhalter

Die folgenden Platzhalterzeichen werden von der Bash-Shell unterstützt und können in Verbindung mit dem Befehl [ verwendet werden:

  • *: Passt zu jeder beliebigen Zeichenfolge, einschließlich leerer Zeichenfolgen.
  • ?: Passt zu jedem einzelnen Zeichen.
  • []: Passt zu einem beliebigen Zeichen innerhalb der eckigen Klammern. Beispiel: [0-9] findet alle Dateien, deren Namen mit einer Zahl beginnen.

Beispiele

Nehmen wir an, du möchtest prüfen, ob eine Datei mit dem Namen text* existiert. Folgender Befehl würde dies tun:

[ -e text* ]

Wenn es eine Datei mit einem Namen gibt, der mit text beginnt, gibt der Befehl true zurück, andernfalls false.

Du kannst Platzhalter auch verwenden, um eine ganze Gruppe von Dateien zu prüfen. Beispielsweise würde folgender Befehl prüfen, ob eine Datei mit der Endung .txt existiert:

[ -e *.txt ]

Vorsichtsmaßnahmen

Bei der Verwendung von Platzhaltern solltest du Folgendes beachten:

  • Achte darauf, die Platzhalterzeichen ordnungsgemäß zu escapen, wenn sie in einem regulären Ausdruck verwendet werden.
  • Überprüfe die Ergebnisse sorgfältig, da Platzhalterzeichen unerwartete Übereinstimmungen verursachen können.
  • Vermeide es, Platzhalter für Dateinamen mit Sonderzeichen oder Leerzeichen zu verwenden.

Prüfung auf Existenz mehrerer Dateien

Solltest du die Existenz mehrerer Dateien überprüfen wollen, kannst du den Befehl find einsetzen. find durchsucht ein Verzeichnis (oder mehrere Verzeichnisse) nach bestimmten Kriterien. Um nach mehreren Dateien zu suchen, kannst du Platzhalter verwenden, wie z.B. * (jedes Zeichen) oder ? (ein einzelnes Zeichen).

Verwendung von Platzhaltern

Um beispielsweise zu prüfen, ob alle Dateien mit der Endung .txt im aktuellen Verzeichnis existieren, verwendest du folgenden Befehl:

find . -name "*.txt"

Dabei durchsucht find das aktuelle Verzeichnis (-name) nach Dateien, deren Name der Endung .txt entspricht.

Umgang mit Sonderfällen

Bei der Suche nach mehreren Dateien musst du einige Sonderfälle berücksichtigen:

  • Versteckte Dateien: Um auch versteckte Dateien einzubeziehen, verwende die Option -ls. Beispiel: find . -ls -name "*.txt"

  • Sonderzeichen: Wenn Dateinamen Sonderzeichen enthalten (z.B. Leerzeichen), musst du sie mit Anführungszeichen umschließen: `find . -name ""file mit Leerzeichen.txt"``

  • Lange Dateinamen: Falls du sehr lange Dateinamen hast, kannst du die Option -maxdepth verwenden, um die Suchtiefe zu beschränken: find . -maxdepth 1 -name "*.txt"

Umgang mit leeren Dateien

Leere Dateien können für dich eine Herausforderung darstellen, wenn du ihre Existenz prüfen willst. Das liegt daran, dass der Befehl [ -f ] zwar prüft, ob eine Datei existiert, aber nicht feststellt, ob sie leer ist.

Prüfung auf Leere mit `stat`

Um zu prüfen, ob eine Datei leer ist, kannst du den Befehl stat verwenden. Die Option --printf ermöglicht es dir, bestimmte Informationen über die Datei abzurufen, darunter auch ihre Größe:

$ stat --printf="%s" datei.txt
5

Im obigen Beispiel hat datei.txt eine Größe von 5 Byte. Wenn die Datei leer ist, gibt stat eine Größe von 0 zurück:

$ stat --printf="%s" leere_datei.txt
0

Verwendung des Befehls `test`

Eine weitere Möglichkeit, leere Dateien zu prüfen, ist der Befehl test. Mit der Option -s kannst du prüfen, ob eine Datei eine Größe ungleich Null hat:

$ test -s datei.txt
$ echo $?
0

Der Befehl test gibt den Rückgabewert 1 zurück, wenn die Datei leer ist, und 0, wenn sie eine Größe ungleich Null hat.

Sonderfall: Ausgeblendete Dateien

Wenn du mit ausgeblendeten Dateien arbeitest, musst du möglicherweise die Option -a mit find verwenden. Diese Option weist find an, auch versteckte Dateien einzuschließen:

$ find ./ -type f -name ".hidden_file"
./.hidden_file

Prüfung auf Existenz von Verzeichnissen

Wenn du wissen möchtest, ob ein Verzeichnis existiert, kannst du den Befehl [ -d ] verwenden. Die Syntax lautet:

[ -d VERZEICHNIS ]

Dabei ist VERZEICHNIS der Pfad zum Verzeichnis, auf dessen Existenz du prüfen möchtest.

Zurückgabewerte

Der Befehl gibt einen von zwei Rückgabewerten zurück:

  • 0, wenn das Verzeichnis existiert
  • 1, wenn das Verzeichnis nicht existiert

Verwendung

Um beispielsweise zu prüfen, ob das Verzeichnis /home/benutzer/Dokumente existiert, würdest du folgenden Befehl ausführen:

[ -d /home/benutzer/Dokumente ]

Platzierhalter

Du kannst auch Platzhalter verwenden, um auf mehrere Verzeichnisse zu prüfen. Beispielsweise prüft der folgende Befehl, ob die Verzeichnisse /home/benutzer/Dokumente und /home/benutzer/Bilder existieren:

[ -d /home/benutzer/{Dokumente,Bilder} ]

Umgang mit leeren Verzeichnissen

Der Befehl [ -d ] prüft nur auf die Existenz eines Verzeichnisses, unabhängig davon, ob es leer ist oder nicht. Wenn du prüfen möchtest, ob ein Verzeichnis nicht leer ist, kannst du den Befehl [ -n ] verwenden. Die Syntax lautet:

[ -n VERZEICHNIS ]

Codebeispiel

Hier ist ein Codebeispiel, in dem geprüft wird, ob das Verzeichnis /home/benutzer/Dokumente existiert und nicht leer ist:

if [ -d /home/benutzer/Dokumente ] && [ -n /home/benutzer/Dokumente ]; then
  # Das Verzeichnis existiert und ist nicht leer
else
  # Das Verzeichnis existiert nicht oder ist leer
fi

Prüfung auf Existenz von Links

Links sind Verweise auf andere Dateien oder Verzeichnisse. Überprüfe mithilfe des BASH-Befehls -L, ob es sich bei einer bestimmten Datei um einen Link handelt:

Verwendung von -L

Führe den folgenden Befehl aus, um zu prüfen, ob link.txt ein Link ist:

[ -L link.txt ] && echo "Ist ein Link" || echo "Ist kein Link"

Platzhalter für Dateinamen

Du kannst Platzhalter verwenden, um mehrere Links zu prüfen. Beispielsweise überprüft dieser Befehl alle .txt-Dateien im Verzeichnis Dokumente:

find /Dokumente -name '*.txt' -type l -print

Umgang mit leeren Links

Leere Links verweisen auf keine andere Datei oder kein Verzeichnis. Du kannst sie mit dem folgenden Befehl prüfen:

[ -L link.txt -a ! -s link.txt ] && echo "Leerer Link"

Sonderfälle

Beachte folgende Sonderfälle:

  • Versteckte Dateien: Verwende find mit der Option -xdev für versteckte Dateien.
  • Sonderzeichen: Escape Sonderzeichen in Dateinamen mit \.
  • Lange Dateinamen: Verwende Anführungszeichen um Dateinamen mit Leerzeichen oder Sonderzeichen.

Codebeispiele

Beispiel 1: Prüfung auf einen einzelnen Link

if [ -L "link.txt" ]; then
  echo "link.txt ist ein Link"
fi

Beispiel 2: Prüfung auf mehrere Links in einem Verzeichnis

for file in /Dokumente/*.txt; do
  if [ -L "$file" ]; then
    echo "$file ist ein Link"
  fi
done

Sonderfälle: Versteckte Dateien, Sonderzeichen, lange Dateinamen

Versteckte Dateien

Versteckte Dateien werden unter Linux und macOS mit einem Punkt (.) am Anfang des Dateinamens gekennzeichnet. Um diese Dateien in deiner Prüfung einzubeziehen, musst du den Pfad zur Datei mit dem Präfix "." angeben. Beispiel:

if [ -f ./.versteckteDatei ]; then
  echo "Versteckte Datei gefunden"
fi

Sonderzeichen

Sonderzeichen wie Leerzeichen, Tabs und Sonderzeichen können in Dateinamen vorkommen. Um diese Zeichen in deiner Prüfung zu berücksichtigen, musst du den Dateinamen in Anführungszeichen setzen. Beispiel:

if [ -f "datei mit Sonderzeichen.txt" ]; then
  echo "Datei mit Sonderzeichen gefunden"
fi

Lange Dateinamen

Wenn Dateinamen länger als 255 Zeichen sind, kannst du sie nicht mit der einfachen [ -f ]-Prüfung testen. In diesem Fall musst du die GNU-Erweiterung [ -e ] verwenden, die auch lange Dateinamen unterstützt. Beispiel:

if [ -e "sehr_langer_Dateiname_mit_mehr_als_255_Zeichen.txt" ]; then
  echo "Lange Datei gefunden"
fi

Codebeispiele für gängige Szenarien

Prüfung auf Existenz einer Datei

if [ -f /pfad/zur/datei ]; then
  # Datei existiert
else
  # Datei existiert nicht
fi

Verwendung von Platzhaltern für die Dateibenennung

if [ -f "/pfad/zur/*.txt" ]; then
  # Mindestens eine TXT-Datei im angegebenen Pfad existiert
else
  # Keine TXT-Datei im angegebenen Pfad gefunden
fi

Prüfung auf Existenz mehrerer Dateien

for datei in datei1 datei2 datei3; do
  if [ -f "/pfad/zur/$datei" ]; then
    # Datei existiert
  else
    # Datei existiert nicht
  fi
done

Umgang mit leeren Dateien

if [ -s /pfad/zur/datei ]; then
  # Datei ist nicht leer
else
  # Datei ist leer oder existiert nicht
fi

Prüfung auf Existenz von Verzeichnissen

if [ -d /pfad/zum/verzeichnis ]; then
  # Verzeichnis existiert
else
  # Verzeichnis existiert nicht
fi

Prüfung auf Existenz von Links

if [ -L /pfad/zum/link ]; then
  # Link existiert
else
  # Link existiert nicht
fi

Sonderfälle: Versteckte Dateien, Sonderzeichen, lange Dateinamen

Versteckte Dateien

if [ -f ~/.versteckteDatei ]; then
  # Versteckte Datei existiert
fi

Sonderzeichen

if [ -f "/pfad/zur/datei mit Leerzeichen" ]; then
  # Datei mit Leerzeichen im Namen existiert
fi

Lange Dateinamen

if [ -f "/pfad/zur/sehr langen Datei mit mehr als 255 Zeichen im Namen" ]; then
  # Datei mit langem Namen existiert
fi

Weitere Beiträge

Folge uns

Neue Beiträge

Frontend

Icon Design: Die perfekte Ergänzung für deine Website oder App

AUTOR • Jun 18, 2026
Frontend

Moodle Symbole: Bedeutung, Anwendung und Erstellung einfach erklärt

AUTOR • Jun 18, 2026
Frontend

Hintergrundfarbe in HTML ändern: Schritt-für-Schritt-Anleitung für Anfänger und Profis

AUTOR • Jun 18, 2026
Frontend

HTML Tabellen mit Rahmen erstellen: So baust du professionelle und strukturierte Tabellen

AUTOR • Jun 18, 2026
Datenbanken

Daten aus HTML-Tabellen mühelos in Excel übertragen: So geht's schnell und sauber

AUTOR • Jun 18, 2026
Frontend

HTML Tabellenrahmen ohne CSS erstellen: Anleitung für Entwickler

AUTOR • Jun 18, 2026
Frontend

HTML Parsing Techniken und Tools zum Extrahieren von Daten aus Webdokumenten: So baue ich saubere Daten-Pipelines

AUTOR • Jun 18, 2026
DevOps & Deployment

Linux Dienst neu starten: Die detaillierte Anleitung für systemd, SysVinit und Fehlerfälle

AUTOR • Jun 18, 2026
DevOps & Deployment

macOS Linux Dualboot Konfiguration: Die ultimative Anleitung für ein sauberes Setup

AUTOR • Jun 18, 2026
Frontend

HTML Tabellenspaltenbreite optimieren: So kontrolliere ich das Layout meiner Tabellen

AUTOR • Jun 18, 2026
Frontend

CSS Animationen meistern: Belebe deine Website mit Bewegung, die konvertiert

AUTOR • Jun 18, 2026
Frontend

HTML Kalender: Ein umfassender Leitfaden zur Erstellung interaktiver Zeitpläne

AUTOR • Jun 18, 2026
DevOps & Deployment

Linux Partition loeschen: Schritt-für-Schritt-Anleitung zur Bereinigung Ihres Laufwerks

AUTOR • Jun 18, 2026
DevOps & Deployment

Rekursives Auffinden von Dateien nach Name unter Linux: die schnellsten Befehle und Praxis-Tipps

AUTOR • Jun 18, 2026
DevOps & Deployment

Gruppenzugehörigkeit eines Benutzers unter Linux auflisten: Die schnellsten Befehle und Praxis-Tipps

AUTOR • Jun 18, 2026
API & Webservices

Postman: Download, Installation und erste Schritte

AUTOR • Jun 18, 2026
DevOps & Deployment

Linux Zeitzone festlegen: Schritt-für-Schritt-Anleitung für jede Distribution

AUTOR • Jun 18, 2026
DevOps & Deployment

Linux ls: Ein umfassender Leitfaden zum Dateimanager der Kommandozeile

AUTOR • Jun 18, 2026
DevOps & Deployment

Dual Boot von Windows 11 und Linux: Schritt-für-Schritt-Anleitung für eine saubere Installation

AUTOR • Jun 18, 2026
DevOps & Deployment

Umweltvariablen in Linux mit dem echo Befehl ausgeben: So geht’s schnell und sauber

AUTOR • Jun 18, 2026

Beliebte Beiträge

DevOps & Deployment

Cheat Engine: Das ultimative Werkzeug für das Modifizieren von Videospielen

AUTOR • May 06, 2024
DevOps & Deployment

Gehaltsaussichten für Linux-Administratoren

AUTOR • May 06, 2024
Backend

Geräte unter Linux auflisten und verwalten

AUTOR • May 06, 2024
DevOps & Deployment

Ubuntu vs. Mint: Welches Linux ist das Richtige für Sie?

AUTOR • May 06, 2024
DevOps & Deployment

Entdecken Sie den Linux App Store: Ihr Tor zu Tausenden von Apps

AUTOR • May 06, 2024
Frontend

HTML-Zählerskript: Verfolgen und Anzeigen von Besucherdaten auf Ihrer Website

AUTOR • Apr 24, 2024
Frontend

HTML in JSON: Konvertieren, Validieren und Verwenden

AUTOR • Apr 24, 2024
Frontend

Das HTML-Mark-Tag: Eine Anleitung zur einfachen Textmarkierung

AUTOR • Apr 24, 2024
Frontend

Die 404-Seite: Was sie ist, warum sie wichtig ist und wie man sie optimiert

AUTOR • Apr 24, 2024
Frontend

HTML-Kalender: Erstellen Sie interaktive und ansprechende Datumsauswahl

AUTOR • Apr 24, 2024
Frontend

Durchgestrichener Text in HTML: Das Strikethrough-Element

AUTOR • Apr 23, 2024
DevOps & Deployment

Effektive Nutzung von Tcpdump mit IP-Adressfiltern

AUTOR • Jun 16, 2025
DevOps & Deployment

Die besten Desktop-Umgebungen für Linux Mint im Überblick

AUTOR • Jun 16, 2025
DevOps & Deployment

Linux für Tablets: Vorteile, Herausforderungen und beliebte Distributionen

AUTOR • May 06, 2024
DevOps & Deployment

Dateimanager unter Ubuntu: Ein umfassender Leitfaden

AUTOR • May 06, 2024
DevOps & Deployment

Vergleich zweier Dateien unter Linux mit dem Diff-Befehl

AUTOR • May 06, 2024
Frontend

Der Linux-Befehl time: Messung von Ausführungszeit und Ressourcenverbrauch

AUTOR • May 06, 2024
DevOps & Deployment

Linux Mint: Eine umfassende Einführung für Einsteiger und Umsteiger

AUTOR • May 06, 2024
API & Webservices

HTTrack: Die ultimative Anleitung zum Herunterladen ganzer Websites

AUTOR • Apr 24, 2024
Frontend

Zentrierten Text in HTML: Eine Schritt-für-Schritt-Anleitung

AUTOR • Apr 24, 2024