ForumVerzeichnistest in Skript
Martin Zeller – Sonntag, 06. März 2005 03:38 Uhr

Hi,
ich möchte, in einem Skript, ein Verzeichnis prüfen ob es leer ist.
Die Lösung habe ich, es würde mich aber Interessieren ob es eleganter
geht.
if [ “`ls -A /mnt | wc -l`” -eq 0 ] ; then …..

Ein
if [ “`find /mnt -empty`” ]; then …..
geht Recursive durch /mnt und schlägt auf jedes leere Verzeichnis an und
hilft so nicht weiter.

Ein
if [ ! -s /mnt ] ; then …
oder
if [ -z /mnt ] ; then ….
zeigt auch nicht die gewünschte Reaktion.

Martin

3 Antworten
Uli Heller – Sonntag, 06. März 2005 07:55 Uhr

Hallo Martin,

ist natürlich recht subjektiv, die Sache mit der Eleganz. Hier kurz ein paar Anmerkungen: Den FIND-Befehl kannst Du mit “-maxdepth N” auf eine max. Scantiefe begrenzen Die Sache mit “[ -z…]” hilft Dir relativ sicher nicht weiter Gleiches gilt für “[… -s…]” Für die letzten beiden Dinge solltest Du man test näher untersuchen!

MfG, Uli.

Doki Nafaso – Sonntag, 06. März 2005 11:01 Uhr

if [ “`ls -A /mnt | wc -l`” -eq 0 ] ; then …..

ls /mnt/* || echo “Verzeichnis leer oder nicht vorhanden”

Doki Nafaso – Montag, 07. März 2005 13:11 Uhr

ls /mnt/* || echo “Verzeichnis leer oder nicht vorhanden”

Könnte mir vielleicht jemand erklären, was an dem Vorschlag so schlecht sein soll?

SeRa – Sonntag, 06. März 2005 11:34 Uhr

NA ja, was ist schon eleganter? Ich würde mich auf test beschränken und sowas machen:
#! /bin/bash

if [ -d blabla -a ! -e blabla/* ]
then
echo “Verzeichnis leer”
else
echo “Verzeichnis nicht leer”
fi

Hierbei ist natürlich blabla das zu überprüfende Verzeichnis!
Gruss