• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

NUR Verzeichnisse auflisten

hissshack

Newbie
Hallo,

ich suche nach einer Moeglichkeit
nur Ordner aufzulisten die in einem verzeichnis sind, ohne den restlichen
Inhalt, so dass ich den Namen des Ordners mit einem Datenbankeintrag
vergleichen kann.
Gibts eine Moeglichkeit die Ordnernamen in einem bestimmten Verzeichnis
auszulesen damit ich die vergleichen kann? Bzw. wie kann ich das bewerkstelligen?
 
OP
H

hissshack

Newbie
Hi Snubnose,
das klappt soweit ganz gut.

wenn ich
Code:
find /var/lib/mysql -type d
nutze hab ich ein Ergebis in der Form:
Code:
/var/lib/mysql/Ordner1
/var/lib/mysql/Ordner2
/var/lib/mysql/Ordner3
...

wie splitte ich die so dass nur noch Ordnerx uebrig bleibt?
In php gibts dazu ne Funktion : Explode
kann ich dazu das Kommando sed verwenden? und wenn, wie?
 

Azhrarn

Newbie
Ich habe das mit
Code:
find . -maxdepth 1 -printf %P\
gemacht. Allerdings bin ich mir wegen dem letzten Backslash nicht sicher, denn eine andere Möglichkeit ein Leerzeichen zwischen den Ordnernamen einzufügen habe ich nicht gefunden.
 

TeXpert

Guru
hissshack schrieb:
Hi Snubnose,
das klappt soweit ganz gut.

wenn ich
Code:
find /var/lib/mysql -type d
nutze hab ich ein Ergebis in der Form:
Code:
/var/lib/mysql/Ordner1
/var/lib/mysql/Ordner2
/var/lib/mysql/Ordner3
...

wie splitte ich die so dass nur noch Ordnerx uebrig bleibt?
In php gibts dazu ne Funktion : Explode
kann ich dazu das Kommando sed verwenden? und wenn, wie?

also Du willst, ich verallgemeinere Dein Beispiel, bei einem
Code:
find /pfad/zu/einem/ordner -type d
nutze hab ich ein Ergebis in der Form:
Code:
/pfad/zu/einem/ordner/Ordner1
/pfad/zu/einem/ordner/Ordner2
/pfad/zu/einem/ordner/Ordner3
...
als Ergebnis nur ein
Code:
ordner1
ordner2
...
haben?

wenn ja, dann gibts mehrere Möglichkeiten, 1. mit sed

Code:
find /pfad/zu/einem/ordner -type d  | sed -e 's#/pfad/zu/einem/ordner/##'


2. ohne sed mit printf (wie Azhrarn vorgeschlagen hat), hier ist zu klären, wie die Namen weiterverarbeitet werden sollen (0-Terminiert, oder Newline...)

Code:
find /pfad/zu/einem/ordner -type d -printf "%f\n"

3. mit exec und basename:
Code:
find /pfad/zu/einem/ordner -type d -exec basename {} \;

find ist rekursiv, d.h. wenn nur die 1. Ebene der Ordner aufgelistet werden soll, ist noch ein
Code:
-maxdepth 1
bei beiden Varianten angebracht.
 
Einen habe ich auch noch...
Code:
( cd /pfad && find . -type d )

Damit entsteht der lange Pfandname erst gar nicht.

Sonst habe ich noch folgendes in meiner Lieblingsliste um Shell-Variablen zu "kürzen":
Code:
Change "extention" of a variable:

shell# a=replace/etc/replace/passwd.replace ; b=${a//replace/by} ; echo $b
by/etc/by/passwd.by

shell# a=replace/etc/replace/passwd.replace ; b=${a//#replace/by} ; echo $b
by/etc/replace/passwd.replace

shell# a=replace/etc/replace/passwd.replace ; b=${a//%replace/by} ; echo $b
replace/etc/replace/passwd.by

shell# a=/part1/part2/part3/part4.part5 ; b=${a##*/} ; echo $b
part4.part5

shell# a=/part1/part2/part3/part4.part5 ; b=${a#*/} ; echo $b
part1/part2/part3/part4.part5

shell# a=part1.part2 ; b=${a%.part2} ; echo $b
part1

shell# parameter=123456 ; echo ${parameter:1:3}
234

Haveaniceday
 
Oben