Abfrage auf leeres Verzeichnis
Hallo Liste, hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ? Also bspw if [ Verzeichnis /tmp/test/ == leer ]; then echo "Verz ist leer" fi Weder test noch ls oder rmdir bieten diese Möglichkeit. Vielen Dank im voraus. -- kind regards, Jens Strohschnitter ----------------------------------------- LINUX LINUX LINUX LINUX LINUX LINUX LINUX Set the controls for the heart of the sun LINUX LINUX LINUX LINUX LINUX LINUX LINUX ----------------------------------------- __________________________________________________________ Raiffeisen Waren-Zentrale Rhein-Main eG 50668 Koeln, Altenberger Str. 1a Tel: 0221/1638-0 Fax: 0221/1638-254 Sitz: Koeln Amtsgericht Koeln, GnR 728 Geschaeftsfuehrender Vorstand: Hans-Josef Hilgers (Sprecher) Markus Stuettgen Dr. Karl-Heinrich Suemmermann Vorstand: Friedhelm Decker (Vorsitzender) Ingo Steitz Vorsitzender des Aufsichtsrates: Peter Bleser (MdB) St.Nr.: 215/5938/0152 Bankverbindung: WGZ Bank AG, Duesseldorf (BLZ 300 600 10) Konto-Nr.: 300 011 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin, Jens Strohschnitter wrote:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
Wie wärs mit ls | wc -l Grüße Wolf -- Tradition heißt, das Feuer weiterzutragen und nicht die Asche anzubeten - Gustav Mahler -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 12 März 2009 09:47:44 schrieb Jens Strohschnitter:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
Also bspw
if [ Verzeichnis /tmp/test/ == leer ]; then echo "Verz ist leer" fi
Weder test noch ls oder rmdir bieten diese Möglichkeit.
Zählen tut man it "wc" wc - Bytes, Wörter und Zeilen von Dateien zählen if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
On Thu, 12 Mar 2009 09:59:03 +0100
"Dr. Jürgen Vollmer"
Am Donnerstag 12 März 2009 09:47:44 schrieb Jens Strohschnitter:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi
Yep, vielen Dank für die Info - auf die naheliegenden Dinge kommt eben immer zuletzt. -- kind regards, Jens Strohschnitter ----------------------------------------- LINUX LINUX LINUX LINUX LINUX LINUX LINUX Set the controls for the heart of the sun LINUX LINUX LINUX LINUX LINUX LINUX LINUX ----------------------------------------- __________________________________________________________ Raiffeisen Waren-Zentrale Rhein-Main eG 50668 Koeln, Altenberger Str. 1a Tel: 0221/1638-0 Fax: 0221/1638-254 Sitz: Koeln Amtsgericht Koeln, GnR 728 Geschaeftsfuehrender Vorstand: Hans-Josef Hilgers (Sprecher) Markus Stuettgen Dr. Karl-Heinrich Suemmermann Vorstand: Friedhelm Decker (Vorsitzender) Ingo Steitz Vorsitzender des Aufsichtsrates: Peter Bleser (MdB) St.Nr.: 215/5938/0152 Bankverbindung: WGZ Bank AG, Duesseldorf (BLZ 300 600 10) Konto-Nr.: 300 011 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin, On Thu, 12 Mar 2009, 10:06:30 +0100, Jens Strohschnitter wrote:
On Thu, 12 Mar 2009 09:59:03 +0100 "Dr. Jürgen Vollmer"
wrote: Am Donnerstag 12 März 2009 09:47:44 schrieb Jens Strohschnitter:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi
Yep,
vielen Dank für die Info - auf die naheliegenden Dinge kommt eben immer zuletzt.
mit obigem Kommando erwischt du aber die '.??*' Dateien nicht. Ich wuerde lieber "stat" verwenden: if [ -d DIR ] && [ `stat -c '%h' DIR` = 2 ]; then echo "DIR ist leer" fi Das Format '%h' gibt die Anzahl Hardlinks von DIR aus, die 2 ist, wenn eben nur noch die Standard-Directories "." und ".." vorhanden sind. HTH, cheers. l8er manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 12 März 2009 10:56:14 schrieb Manfred Hollstein:
Moin,
On Thu, 12 Mar 2009, 10:06:30 +0100, Jens Strohschnitter wrote:
On Thu, 12 Mar 2009 09:59:03 +0100
"Dr. Jürgen Vollmer"
wrote: Am Donnerstag 12 März 2009 09:47:44 schrieb Jens Strohschnitter:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi
Yep,
vielen Dank für die Info - auf die naheliegenden Dinge kommt eben immer zuletzt.
mit obigem Kommando erwischt du aber die '.??*' Dateien nicht. Ich wuerde lieber "stat" verwenden:
if [ -d DIR ] && [ `stat -c '%h' DIR` = 2 ]; then echo "DIR ist leer" fi
Das Format '%h' gibt die Anzahl Hardlinks von DIR aus, die 2 ist, wenn eben nur noch die Standard-Directories "." und ".." vorhanden sind.
das tut's dann auch: if [ `ls -a | wc -l` -eq 2 ] Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
On Thu, 12 Mar 2009, 11:02:45 +0100, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Donnerstag 12 März 2009 10:56:14 schrieb Manfred Hollstein:
Moin,
On Thu, 12 Mar 2009, 10:06:30 +0100, Jens Strohschnitter wrote:
On Thu, 12 Mar 2009 09:59:03 +0100
"Dr. Jürgen Vollmer"
wrote: Am Donnerstag 12 März 2009 09:47:44 schrieb Jens Strohschnitter:
Hallo Liste,
hat jemand ein Kommando parat mit dem ich wie bei "test" auf eine Datei, auf ein Verzeichnis prüfen kann, ob dieses leer ist ?
if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi
Yep,
vielen Dank für die Info - auf die naheliegenden Dinge kommt eben immer zuletzt.
mit obigem Kommando erwischt du aber die '.??*' Dateien nicht. Ich wuerde lieber "stat" verwenden:
if [ -d DIR ] && [ `stat -c '%h' DIR` = 2 ]; then echo "DIR ist leer" fi
Das Format '%h' gibt die Anzahl Hardlinks von DIR aus, die 2 ist, wenn eben nur noch die Standard-Directories "." und ".." vorhanden sind.
das tut's dann auch:
if [ `ls -a | wc -l` -eq 2 ]
Lass' mal ein strace auf "ls -a" mitlaufen und vergleiche, wieviel Systemcalls das macht gegenueber einem "stat -c '%h' DIR", dann weisst du, wovon ich rede... Vor allem, wenn du den Test auf ein riesiges Directory machst...
Bye Jürgen
Cheers. l8er manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Manfred Hollstein schrieb:
On Thu, 12 Mar 2009, 11:02:45 +0100, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Donnerstag 12 März 2009 10:56:14 schrieb Manfred Hollstein: ... Lass' mal ein strace auf "ls -a" mitlaufen und vergleiche, wieviel Systemcalls das macht gegenueber einem "stat -c '%h' DIR", dann weisst du, wovon ich rede... Vor allem, wenn du den Test auf ein riesiges Directory machst...
also wenn ich ein abirndt@UBUNTUNB:/WD_Linux_1/temp/bilder$ stat -c '%h' zu_Hause_09_orig 2 mache, dann bekomme ich als Ergebnis 2. Klar, "." u. ".." gibts immer, das sagt aber nichts darüber aus, ob das Verzeichnis leer ist, wie die ursprüngliche Frage war. abirndt@UBUNTUNB:/WD_Linux_1$ stat -c '%h' temp 3 Wenn ich den Befehl auf das Verzeichnis temp loslasse, dann bekomme ich als Ergebnis 3. Auch klar, ".", ".." und den Namen des Verzeichnisses "bilder" Der Befehl "stat -c '%h' zu_Hause_09_orig" fragt also meiner Meinung nach ab, wieviele Verzeichniseinträge existieren, richtig? Damit ist leider die Fragestellung des Threadöffners nicht direkt geklärt. Man kann an Hand der Zahlen im Ergebnis doch nur Rückschlüsse darauf ziehen, das es ein/mehrere oder kein unterverzeichnis gibt, oder sehe ich das verkehrt?? Gruß Axel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Axel, On Thu, 12 Mar 2009, 12:14:28 +0100, Axel Birndt wrote:
Manfred Hollstein schrieb:
On Thu, 12 Mar 2009, 11:02:45 +0100, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= wrote:
Am Donnerstag 12 März 2009 10:56:14 schrieb Manfred Hollstein: ... Lass' mal ein strace auf "ls -a" mitlaufen und vergleiche, wieviel Systemcalls das macht gegenueber einem "stat -c '%h' DIR", dann weisst du, wovon ich rede... Vor allem, wenn du den Test auf ein riesiges Directory machst...
also wenn ich ein
abirndt@UBUNTUNB:/WD_Linux_1/temp/bilder$ stat -c '%h' zu_Hause_09_orig 2
mache, dann bekomme ich als Ergebnis 2. Klar, "." u. ".." gibts immer, das sagt aber nichts darüber aus, ob das Verzeichnis leer ist, wie die ursprüngliche Frage war.
abirndt@UBUNTUNB:/WD_Linux_1$ stat -c '%h' temp 3
Wenn ich den Befehl auf das Verzeichnis temp loslasse, dann bekomme ich als Ergebnis 3. Auch klar, ".", ".." und den Namen des Verzeichnisses "bilder"
Der Befehl "stat -c '%h' zu_Hause_09_orig" fragt also meiner Meinung nach ab, wieviele Verzeichniseinträge existieren, richtig?
Damit ist leider die Fragestellung des Threadöffners nicht direkt geklärt. Man kann an Hand der Zahlen im Ergebnis doch nur Rückschlüsse darauf ziehen, das es ein/mehrere oder kein unterverzeichnis gibt, oder sehe ich das verkehrt??
noeh, siehst du ganz richtig; ich war da offensichtlich einer falschen Annahme aufgesessen. Siehe auch meine andere E-mail in diesem Thread.
Gruß Axel
Cheers. l8er manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 12 Mär 2009, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= schrieb:
das tut's dann auch:
if [ `ls -a | wc -l` -eq 2 ]
if test $(ls -A | wc -l) -gt 0; then echo nicht leer else echo leer fi BTW: das 'ls' ist nicht "teuer", das liest das Verzeichnis per 'mmap'. -dnh -- Seither stehe ich noch viel mehr auf breite Ränder. Die des KOMA-Script-Buches reichen mir übrigens nur deshalb, weil alles, was ich an den Rand schreiben würde, schon drin steht. ;-) -- Markus Kohm -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 12 März 2009 20:27:48 schrieb David Haller:
Hallo,
Am Don, 12 Mär 2009, =?iso-8859-1?q?Dr. J=FCrgen Vollmer?= schrieb:
das tut's dann auch:
if [ `ls -a | wc -l` -eq 2 ]
if test $(ls -A | wc -l) -gt 0; then echo nicht leer else echo leer fi
BTW: das 'ls' ist nicht "teuer", das liest das Verzeichnis per 'mmap'.
aber es funktioniert, ist schnell geschreiben, und verständlich. Wenn man rasend schnell sein will, dann schreibt's man in C. Hat man admin-Jobs, dann tut's auch die Shell. Hier kommts meistens auf "schnell geschreiben" an. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hi Manfred! On Thu, 12 Mar 2009, Manfred Hollstein wrote:
mit obigem Kommando erwischt du aber die '.??*' Dateien nicht. Ich wuerde lieber "stat" verwenden:
if [ -d DIR ] && [ `stat -c '%h' DIR` = 2 ]; then echo "DIR ist leer" fi
hm… #v+ ~$ stat -c '%n %h' non-empty non-empty/ 2 ~$ ls -A non-empty blah foobar .hidden ~$ #v- Man könnte auch was mit der Shell-Expansion spielen: #v+ ~$ shopt -s dotglob ~$ printf "%s\n" empty/* empty/* ~$ printf "%s\n" non-empty/* non-empty/blah non-empty/foobar non-empty/.hidden ~$ if [ "`echo empty/*`" = "empty/*" ]; then
echo "leer"; fi leer ~$ if [ "`echo non-empty/*`" = "non-empty/*" ]; then echo "leer"; else echo "nicht leer"; fi nicht leer ~$
Mit freundlichen Grüßen Christian -- Deutschland ist ein geheimnisvolles Land und muß es auch sein. Wegen Nostradamus X,31. -- Norbert Marzahn -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin, On Thu, 12 Mar 2009, 12:44:06 +0100, Christian Brabandt wrote:
Hi Manfred!
On Thu, 12 Mar 2009, Manfred Hollstein wrote:
mit obigem Kommando erwischt du aber die '.??*' Dateien nicht. Ich wuerde lieber "stat" verwenden:
if [ -d DIR ] && [ `stat -c '%h' DIR` = 2 ]; then echo "DIR ist leer" fi
hm… #v+ ~$ stat -c '%n %h' non-empty non-empty/ 2 ~$ ls -A non-empty blah foobar .hidden ~$ #v-
hmm, stimmt, habe mich da wohl doch von dem Irrtum verleiten lassen, dass fuer jeden Eintrag in einem Directory die Anzahl der Hardlinks auf das Directory selber erhoeht wird. Ist offensichtlich nicht so, waere aber schoen, denn ich weiss noch aus eigener Erfahrung, wie laaaaange ein "ls -a/A" auf ein Directory, moeglicherweise noch per NFS gemounted, mit tausenden von Eintraegen dauern kann. Schade eigentlich!
Man könnte auch was mit der Shell-Expansion spielen: #v+ ~$ shopt -s dotglob ~$ printf "%s\n" empty/* empty/* ~$ printf "%s\n" non-empty/* non-empty/blah non-empty/foobar non-empty/.hidden ~$ if [ "`echo empty/*`" = "empty/*" ]; then
echo "leer"; fi leer ~$ if [ "`echo non-empty/*`" = "non-empty/*" ]; then echo "leer"; else echo "nicht leer"; fi nicht leer ~$
OK, das spart zumindest den zusaetzlichen Fork/Exec Cycle fuers "ls".
Mit freundlichen Grüßen Christian
Cheers. l8er manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo zusammen, On Thursday 12 March 2009 09:59, Dr. Jürgen Vollmer wrote:
Zählen tut man it "wc"
wc - Bytes, Wörter und Zeilen von Dateien zählen
if [ `ls DIR | wc -l` -eq 0 ] then echo "Verz ist leer" fi
oder noch einfacher: if [[ -n `ls $1` ]] then echo "ja $1 ist voll" else echo "nein $1 ist leer" fi Liebe Grüße Erik -- "Die Welt des Rauchens fügt sich aus so vielen Wesenheiten zusammen, dass man sie nicht einem Gesetz unterwerfen kann." Edgar Faure Erik P. Roderwald * Uhlenhoffweg 18 * 21129 Hamburg http://www.zigarren-rollen.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Liste. weiss jemand wie man den consolen-screensaver cmatrix im Runlevel 3 automatisch anstatt dem Blankscreen starten lässt ? Gruss Jens __________________________________________________________ Raiffeisen Waren-Zentrale Rhein-Main eG 50668 Koeln, Altenberger Str. 1a Tel: 0221/1638-0 Fax: 0221/1638-254 Sitz: Koeln Amtsgericht Koeln, GnR 728 Geschaeftsfuehrender Vorstand: Hans-Josef Hilgers (Sprecher) Markus Stuettgen Dr. Karl-Heinrich Suemmermann Vorstand: Friedhelm Decker (Vorsitzender) Ingo Steitz Vorsitzender des Aufsichtsrates: Peter Bleser (MdB) St.Nr.: 215/5938/0152 Bankverbindung: WGZ Bank AG, Duesseldorf (BLZ 300 600 10) Konto-Nr.: 300 011 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (8)
-
Axel Birndt
-
Christian Brabandt
-
David Haller
-
Dr. Jürgen Vollmer
-
Erik P. Roderwald
-
Jens Strohschnitter
-
Manfred Hollstein
-
Wolf-Rüdiger Jürgens