Shell-Tipps: Erkennung leerer Verzeichnisse

Shell-Tipps: Erkennung leerer Verzeichnisse

01.05.2024
Autor: HostZealot Team
2 min.
36

Schlüsselaspekte

Die Verwaltung des Linux-Systems ist keine einfache Aufgabe, und um sie effektiv zu erledigen, sollten Sie die Befehle kennen und die wichtigsten Aspekte der Prozesse verstehen. Zum Beispiel ist es wichtig zu wissen, ob das Verzeichnis leer ist, bevor man sich mit wichtigen Operationen beschäftigt.

Auf der Grundlage unserer praktischen Erfahrung in diesem Bereich können wir Ihnen einige Anweisungen geben, die bei der Feststellung eines leeren Verzeichnisses helfen werden. Hier erhalten Sie praktische Empfehlungen, die in Shell-Skript und Shell verwendet werden können.   

1. Verwendung des find-Befehls

In der Regel wird find  verwendet, um nach einem bestimmten Muster zu suchen, wenn es um Verzeichnisse und Dateien geht. In diesem Teil werden wir erklären, wie dieser Befehl auf eine andere Art und Weise verwendet werden kann, insbesondere um zu prüfen, ob ein Verzeichnis leer ist.

1.1. Option -empty

Gemäß den Standardeinstellungen dieses Befehls prüft -empty die Verzeichnisse und Dateien. Um etwas zu ändern und nur Verzeichnisse auszuwählen, verwenden Sie folgendes:

  $ find . -type d -empty

In dieser Befehlszeile wird -empty verwendet, um anzugeben, dass nur nach leeren Dateien oder Verzeichnissen gesucht werden soll, und mit -type d wird angegeben, dass nur nach Verzeichnissen gesucht werden soll. Diese Zeile führt zu den Pfaden der gefundenen Verzeichnisse, die leer sein sollten.

1.2. Befehl mit if-Anweisung

Hier zeigen wir Ihnen 2 Varianten, wie Sie if-Anweisungen zusammen mit dem test Befehl verwenden können. Der erste Ansatz zählt die Dateien in einem bestimmten Verzeichnis, und zwar folgendermaßen:

if [ "$(find projects -mindepth 1 -maxdepth 1 | wc -l)" -eq 0 ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi

In diesem Skript -eq 0 funktioniert, indem es vergleicht, ob die Anzahl der Einträge Null ist, wc -l zählt die Einträge im Verzeichnis. -mindepth 1 - dieser Teil garantiert, dass find kein Verzeichnis in der Suche hat und -maxdepth 1 - dies bedeutet, dass Verzeichnisse/Dateien in einem bestimmten Verzeichnis gesucht werden.

Eine andere Möglichkeit sieht so aus:

if [ -z "$(find projects -mindepth 1 -maxdepth 1)" ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi

In diesem Skript bedeutet -z true im Falle einer leeren Ausgabe. Das heißt, wenn das Projekt tatsächlich leer ist, werden Sie mit dieser Phase "Leeres Verzeichnis" benachrichtigt.  

2. Anwendung des ls-Befehls

Die wohl unkomplizierteste Art, ein Verzeichnis zu überprüfen, ist die Verwendung des ls Befehls. Sie brauchen keine komplizierten Skripte zu erstellen, verwenden Sie einfach die nächste Zeile:

$ ls projects

Die Ausgabe dieser Zeile zeigt nur Verzeichnisse an, die irgendeine Art von Information enthalten, so dass andere, die nicht angezeigt werden, leer sind.

2.1. Anwendung des Prüfbefehls mit if-Anweisung

Um den Inhalt des Verzeichnisses zu überprüfen, müssen Sie ls zusammen mit einer anderen Option verwenden, und zwar so:

$ if [ -z "$(ls -A projects)" ]; then echo "Empty Directory "; else echo "Directory isn’t empty"; fi

In dieser Zeile wird Ein Projekt in Verbindung mit ls verwendet, um die Inhalte in allen Verzeichnissen außer dem aktuellen und dem übergeordneten Verzeichnis anzuzeigen.  

Außerdem ist es möglich, die Anzahl der Artikel zu zählen mit:

$ if [ "$(ls -A projects | wc -l)" -eq 0 ]; then echo "Empty Directory"; else echo "Directory isn’t empty"; fi

3. Shopt-Option

Shopt Option ist ein Befehl, der es erlaubt, die Shell-Optionen zu setzen und zu deaktivieren. Mit der Verwendung des Arguments -s kann nullglob gesetzt werden. Eine solche Option ist dafür verantwortlich, wie die Shell mit Mustern umgeht, die keine passenden Dateien haben. Ein Skript mit nullglob, das nicht auf die Datei passt, expandiert beispielsweise zu einer leeren Liste, während das Muster ohne diese Option nur eine Zeichenkette ist.

# Path of directory
directory_path="/home/samuel/Desktop/projects"
 
# Enable the nullglob
shopt -s nullglob
 
# Whether is it an empty directory?
files=( "$directory_path"/* )
if [ ${#files[@]} -eq 0 ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi

Wenn Sie dieses Bash-Skript verwenden, erhalten Sie die Ausgabe "Empty Directory", falls das Verzeichnis leer ist oder nur versteckte Dateitypen enthält.

4. Abschließende Überlegungen

Wir haben uns entschlossen, unsere praktischen Erfahrungen zu teilen und uns mit verschiedenen Ansätzen zu beschäftigen, die verwendet werden können, um festzustellen, ob das Verzeichnis leer ist oder nicht. Die wichtigsten Ansätze sind die Verwendung von ls und find Befehlen.

Nachdem Sie sich alle verfügbaren Varianten angesehen haben, können Sie anhand der Anforderungen und der Leistung auswählen, was für Ihren speziellen Fall besser geeignet ist. Allein das Verständnis der genannten Techniken für Skripte und Shell-Befehle wird die Verwaltung von Verzeichnissen in Linux-Systemen wirkungsvoll unterstützen. Wir hoffen, dass unsere Anleitungen für Sie hilfreich sind!

Verwandte Artikel