PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ls - list directory contents



Ede
13.01.11, 12:15
Ich möchte "ls -R" (list subdirectories recursively) anwenden, aber so, dass nur Verzeichnisse ohne Dateien ausgegeben werden. Geht das?
Habe in der Manpage "-p, --file-type" (append indicator (one of /=@|) to entries) gefunden. Wollte testen, ob es das ist, was ich suche, verheddere mich aber mit der Syntax.

ThorstenHirsch
13.01.11, 12:34
Wie wär's mit "find . -type d"?

Ede
13.01.11, 12:57
Wunderbar!
Danke.
Ich habe mich so auf ls konzentriert, dass ich find ganz vergessen habe.

kreol
13.01.11, 19:43
Nur der Vollständigkeit halber (und evtl. willst Du ja noch andere Options von ls anwenden): -p setzt (wie -F) nur Indikatoren an das Ende des Dateinamens (/ für Verzeichnisse, * für ausführbare Dateien, @ für Symlinks...), also nützlich im wesentlichen iVm grep
ls -Rp | grep /$liefert alle (Unter-)Verzeichnisse, allerdings ohne vollständigen Pfad. Dafür kann man das mit allen anderen Optionen von ls kombinieren, also z.B. sortieren.

Kreol

Smartie
14.01.11, 08:00
"ls -l | grep -i ^d" gibt alle Verzeichnisse im aktuellen Verzeichnis aus.

HirschHeisseIch
14.01.11, 12:15
"ls -l | grep -i ^d" gibt alle Verzeichnisse im aktuellen Verzeichnis aus.


find . -type d -maxdepth 1:rolleyes:

Dodobo.reloaded
19.01.11, 18:56
Lustig, wie ihr euch um die beste Variante streitet. ;) Und wer gewinnt? find ist Standard, die ^d-Variante ist aber auch hübsch kreativ. Solang man sich zu helfen weiß...kann doch jeder nehmen, was er will...

Noether
19.01.11, 21:10
Ich möchte "ls -R" (list subdirectories recursively) anwenden, aber so, dass nur Verzeichnisse ohne Dateien ausgegeben werden. Geht das?


Verzeichnisse ohne Dateien, also leere Verzeichnisse, findet man so:

find . -type d -empty

und deren Beseitigung macht man so:

find . -depth -type d -empty -exec rmdir -- {} \;

weil hierbei der post-order walk (=find by depth) verwendet wird.
So ist sichergestellt, das man nicht mehrmals aufräumen muß,
dadurch das beim voherigen Aufräumen ein Verzeichnis leer wurde.

Ede
19.01.11, 23:04
Ah, sehr schön, Noether! So habe ich meinen Satz noch nicht verstanden.
Habt ihr gewusst, dass auf den meisten Systemen diese Aliase definiert sind:
ll für ls -l
l für ls
Habe ich nach 11 Jahren Linux grad erst erfahren. Aber ich benutze auch immer dir von MS-DOS.

Dodobo.reloaded, ich ernenne hier alle zum Siger.

Dodobo.reloaded
19.01.11, 23:16
ll für ls -l
l für ls
Bei meinem Ubuntu 10.04 (LTS) nicht. Aber irgendwann ging sowas in der Art eigentlich mal (irgendwo...).

Ich verwende sowieso meist ls -ahl oder sowas und das geht flott von der Hand, ist meistens brauchbar, ohne nachzudenken über die Optionen. Lieber zu viele Anzeigen aktivieren als zu wenig.

int 80h
20.01.11, 00:16
Also bei meinem Ubuntu sind die ls-Aliase in der .bashrc auskommentiert.

Da ich auch meist "ls -alh" nutze habe ich mir erst vor kurzem selber den Alias l dafür definiert.

Freundliche Grüße,
int 80h

Dodobo.reloaded
20.01.11, 00:25
OT: Wenn man mit so langen Ausgaben wie bei find und ls hantiert, kann man dann dort gleich in der eben genannten .bashrc noch Farbe für den Prompt einstellen - bei Ubuntu einfach "#force_color_prompt=yes" einkommentieren. Ich habe aber eine andere Farbeinstellung ergoogelt. Sonst wird es doch schnell sehr unübersichtlich. Ich hoffe, der Tipp ist noch dem einen oder anderen unbekannt und nützt ihm etwas. Erst seit der Einstellung muss ich nicht mehr ewig nach dem Prompt suchen, Befehlsende und Anfang des neuen herausfinden...

John W
21.01.11, 15:18
und deren Beseitigung macht man so:

find . -depth -type d -empty -exec rmdir -- {} \;
find . -depth -type d -empty -delete

Noch n Tipp: Auf commandlinefu.com (http://commandlinefu.com) gibt es eine ziemliche Ansammlung von (mehr oder minder) nützlichen Befehlen.