Testen ob ein Verzeichnis leer ist

Antworten
Nachricht
Autor
oli
Beiträge: 46
Registriert: 25. Dez 2000 15:40

Testen ob ein Verzeichnis leer ist

#1 Beitrag von oli » 27. Jun 2001 15:48

Hi,

ich suche nach einer Möglichkeit, wie ich feststellen kann, ob sich in einem Verzeichnis
keine files befinden. Natürlich gibt es immer die Verweise auf das aktuelle Verzeichnis (.) und
das übergeordnete Verzeichnis (..). Diese Einträge sollen aber nicht als Treffer gelten sondern nur
reguläre Dateien.

Mit "test -d dirname" kann ich zwar testen, ob das Verzeichnis existiert, nicht aber ob es leer ist.

Ich suche nach einer Möglichkeit mit Shell Mitteln, auch sed & awk sind willkommen, aber halt nicht Perl.

Weiss das zufällig jemand ?

cu

oliver
If you were supposed to understand it, we wouldn't call it code.

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3250
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

Re: Testen ob ein Verzeichnis leer ist

#2 Beitrag von hjb » 27. Jun 2001 16:46

Hi,

cd /pfad/zu/verzeichnis
list=$(echo *)
if [ "$list" = "*" ]
then
# leer
else
# nicht leer
fi
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Ozi

Re: Testen ob ein Verzeichnis leer ist

#3 Beitrag von Ozi » 27. Jun 2001 17:59

Hi,

danke für den hinweis, denke dass ich damit weiterkomme. c' ya <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

cu

oliver

ratte

Re: Testen ob ein Verzeichnis leer ist

#4 Beitrag von ratte » 27. Jun 2001 18:30

cool, dass echo auch files listet, wusste ich ja noch gar nicht, danke!

ratte

Jochen

Re: Testen ob ein Verzeichnis leer ist

#5 Beitrag von Jochen » 28. Jun 2001 13:03

Nö, macht echo nicht.

Verantwortlich ist die Shell dafür, die löst den "*" auf. echo gibt dann nur noch die Liste der Dateiname, die es von der Shell kriegt, aus.

Und da "*" <i>sämtliche</i> Dateien, die mit 'nem Punkt beginnen, ignoriert, kann nach dieser Methode ein Verzeichnis als leer angegeben werden, obwohl dort noch eine Datei .profile oder so liegt.

Vorschlag meinerseits:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
is_empty_dir()
{
if [ `ls -a "$1" | wc -l` -gt 2 ] ; then
return 1
else
return 0
fi
}
</font><hr></pre></blockquote>

Kannst Du in dieser Form verwenden als

if is_empty_dir /pfad/zu/meinem/verzeichnis ; then
# is leer
else
# nich leer
fi

In Ordnung?

Jochen

Ozi

Re: Testen ob ein Verzeichnis leer ist

#6 Beitrag von Ozi » 28. Jun 2001 18:27

Hi,

das ist ebenfalls eine gute Idee <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Die dotfiles brauch ich zwar in meinem Fall nicht, aber gut zu wissen, falls es später mal doch ne Rolle spielt.
Danke für den Tipp <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

cu

oliver

Antworten