Verzeichnisse auflisten mit find
Hallo, da ich dachte, dass man sich mit ls nicht nur die Verzeichnisse anzeigen lassen kann, habe ich gestern mit find herumprobiert. Mit find habe ich es zwar nicht geschafft, aber dann doch noch mit ls. Ein "ls -alFd */" macht genau, was ich will, wobei mich allerdings wundert, dass ein nicht zwingend ein "ls -alFd *\/" sein muss. Obwohl es so geht, interessiert mich aber noch, warum es mit find nicht klappt. Meine nicht funktionierende Idee war: find -path "*" -maxdepth 1 -type d -print Aber das wirft mir auch die mit einem Punkt beginnenden Verzeichnisse aus. Ein find -path "*" -prune ".*" -maxdepth 1 -type d geht ueberhaupt nicht. Also habe ich es mit dem Anhaengen von "-exec ls {} \;", "| xargs ls {} \;" und aehnlichen Konstruktionen versucht. Genauso erfolglos. Und nun bin ich mit meinem Latein am Ende. Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
da ich dachte, dass man sich mit ls nicht nur die Verzeichnisse anzeigen lassen kann, habe ich gestern mit find herumprobiert. Mit find habe ich es zwar nicht geschafft, aber dann doch noch mit ls. (...) Und nun bin ich mit meinem Latein am Ende. Vielleicht hat mein Kaffee noch nicht so richtig gewirkt, aber mir ist nicht so ganz klar, was Du erreichen möchtest. Kannt Du bitte mal ein
Hallo Heinz paar Zeile posten, die zeigen wie das Resultat aussehen sollen? Danke! Grüße, Stephan -- ------------------------------------------------------------------------ Stephan Eickschen Fon: +49 (0)228 933 999 70 Augustastrasse 89 Fax: +49 (0)228 933 999 71 53173 Bonn Cell: +49 (0)170 54 781 60 Germany Email: eickschen.haenel@t-online.de http://www.eiskultur.de ------------------------------------------------------------------------
Hallo Stephan, On 13-Jan-2005 Stephan Eickschen wrote:
Vielleicht hat mein Kaffee noch nicht so richtig gewirkt, aber mir ist nicht so ganz klar, was Du erreichen möchtest. Kannt Du bitte mal ein paar Zeile posten, die zeigen wie das Resultat aussehen sollen?
Eigentlich reicht es, wenn du in /home/dein.user.verzeichnis mal ein "ls -alFd *\/" eingibst und mit der Ausgabe von "find -maxdepth 1 -type d" vergleichst. Beim ersten werden wie gewuenscht nur die Namen der Verzeichnisse ausgegeben, die nicht mit einem Punkt beginnen, beim zweiten dagegen die Namen aller Verzeichnisse. Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
Am Donnerstag, 13. Januar 2005 07:53 schrieb Heinz W. Pahlke:
da ich dachte, dass man sich mit ls nicht nur die Verzeichnisse anzeigen lassen kann, habe ich gestern mit find herumprobiert. Mit find habe ich es zwar nicht geschafft, aber dann doch noch mit ls.
Ein "ls -alFd */" macht genau, was ich will, wobei mich allerdings wundert, dass ein nicht zwingend ein "ls -alFd *\/" sein muss.
Der Ausgabe Deines ls nach zu urteilen willst Du nur die Verzeichnisse direkt unterhalb des aktuellen sehen? find . -type d -maxdepth 1 -print Wenn das aktuelle nicht mit erscheinen soll: find . -type d -maxdepth 1 -mindepth 1 -print Die Art und Weise der Ausgabe kannst Du mit -printf "format" statt -print beeinflussen. Jan -- Linux-Quickies: http://www.jan-trippler.de PingoS: http://www.pingos.org
Hallo Jan, On 13-Jan-2005 Jan Trippler wrote:
Am Donnerstag, 13. Januar 2005 07:53 schrieb Heinz W. Pahlke:
Ein "ls -alFd */" macht genau, was ich will, wobei mich allerdings wundert, dass ein nicht zwingend ein "ls -alFd *\/" sein muss.
Der Ausgabe Deines ls nach zu urteilen willst Du nur die Verzeichnisse direkt unterhalb des aktuellen sehen?
Jein. Verzeichnisse, die mit einem Punkt im Namen beginnen, wie z.B. .vim/, .xvpics/, .ncftp/ usw. sollen _nicht_ aufgelistet werden.
find . -type d -maxdepth 1 -print
Und das listet eben, wie ich schrieb, auch die Punkt-Verzeichnisse auf :-( Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
Am Donnerstag, 13. Januar 2005 07:53 schrieb Heinz W. Pahlke:
(...). da ich dachte, dass man sich mit ls nicht nur die Verzeichnisse anzeigen lassen kann, habe ich gestern mit find herumprobiert. Mit find habe ich es zwar nicht geschafft, aber dann doch noch mit ls. (...). Und nun bin ich mit meinem Latein am Ende.
find . -name "[^.]*" -type d -maxdepth 1 HTH, Jan -- It's better to be a lion for a day, than a sheep all your life.
Hallo Jan, On 13-Jan-2005 Jan Ritzerfeld wrote:
find . -name "[^.]*" -type d -maxdepth 1
Hurra, das funktioniert :-)) Nur - warum? Vermutlich gibt man 7 regex die Antwort, aber ich finde sie nicht :-( Gerade wollte ich die Mail so abschicken, da fiel mein Blick auf "Linux in a nutshell". Klar: Die eckigen Klammern sagen, dass das erste Zeichen _kein_ Punkt sein darf. Ich suche eigentlich immer umgekehrt, dass etwas vorhanden sein muss. Dabei ist die Verneinung manchmal viel einfacher zu handhaben. Man muss nur an diese Moeglichkeit denken. Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
Am Donnerstag, 13. Januar 2005 10:47 schrieb Heinz W. Pahlke:
(...). On 13-Jan-2005 Jan Ritzerfeld wrote:
find . -name "[^.]*" -type d -maxdepth 1
(...). Vermutlich gibt man 7 regex die Antwort, aber ich finde sie nicht :-(
man bash und dann nach "Pattern Matching" suchen, ist ein eigener Abschnitt. Das hat aber nur bedingt was mit regulären Ausdrücken zu tun.
(...). Klar: Die eckigen Klammern sagen, dass das erste Zeichen _kein_ Punkt sein darf.
Fast. :-) Das '^' ist die "Verneinung", "[]" ist nur die Auflistung.
Ich suche eigentlich immer umgekehrt, dass etwas vorhanden sein muss. Dabei ist die Verneinung manchmal viel einfacher zu handhaben. Man muss nur an diese Moeglichkeit denken.
Ja, aber wo ich das gerade sehe, find kann natürlich auch selbst verneinen: find . -not -name ".*" -type d -maxdepth 1 Aber so hast du nebenbei was über Pattern Matching gelernt. :-D MfG, Jan -- Don't force it, get a larger hammer.
Hallo, On 13-Jan-2005 Jan Ritzerfeld wrote:
Am Donnerstag, 13. Januar 2005 10:47 schrieb Heinz W. Pahlke:
(...). Vermutlich gibt man 7 regex die Antwort, aber ich finde sie nicht :-(
man bash und dann nach "Pattern Matching" suchen, ist ein eigener Abschnitt. Das hat aber nur bedingt was mit regulären Ausdrücken zu tun.
Ich geb's ja zu. Bei derlei Dingen gehe ich ziemlich intuitiv vor, weil mir da doch einiges an Basiswissen fehlt.
Klar: Die eckigen Klammern sagen, dass das erste Zeichen _kein_ Punkt sein darf.
Fast. :-) Das '^' ist die "Verneinung", "[]" ist nur die Auflistung.
Manchmal sollte man schreiben was man meint ;-) Ich meinte die gesamte Konstruktion [^.] (der Begriff Konstruktion ist bestimmt ebenfalls nicht korrekt, aber genauer kann ich es nicht benennen).
Ja, aber wo ich das gerade sehe, find kann natürlich auch selbst verneinen: find . -not -name ".*" -type d -maxdepth 1
Genial :-)
Aber so hast du nebenbei was über Pattern Matching gelernt. :-D
Und vielfaeltig einsetzbar :-)) Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
participants (4)
-
Eickschen.Haenel@t-online.de
-
Heinz W. Pahlke
-
Jan Ritzerfeld
-
Jan.Trippler@t-online.de