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
Testen ob ein Verzeichnis leer ist
Testen ob ein Verzeichnis leer ist
If you were supposed to understand it, we wouldn't call it code.
Re: Testen ob ein Verzeichnis leer ist
Hi,
cd /pfad/zu/verzeichnis
list=$(echo *)
if [ "$list" = "*" ]
then
# leer
else
# nicht leer
fi
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?
Re: Testen ob ein Verzeichnis leer ist
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
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
Re: Testen ob ein Verzeichnis leer ist
cool, dass echo auch files listet, wusste ich ja noch gar nicht, danke!
ratte
ratte
Re: Testen ob ein Verzeichnis leer ist
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
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
Re: Testen ob ein Verzeichnis leer ist
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
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