2013-03-18 10 views
11

Ich bin etwas verwirrt über den Befehl oder Modifikatoren zu erhalten: Liste der Verzeichnisse (nur Verzeichnisse, nicht einschließlich Unterverzeichnissen) welche Namen enthalten ein Muster.Liste nur Verzeichnisse Namen, die ein Muster

Vielen Dank im Voraus.

+2

Ein Muster im regulären Ausdrucksstil? Ein glob-Stil-Muster? Soll diese Liste so formatiert werden, dass sie von anderen Werkzeugen eindeutig gelesen werden kann ('printf% s \ 0'', wobei ein Leser eine NUL-begrenzte Eingabe erwartet)? Für den menschlichen Verzehr formatiert ("ls")? Formatiert anders? –

+0

Das letzte Kommando zum Löschen von Verzeichnissen Datum, Größe und Dauer ist: ls -l | grep '^ d' | Grep 'Castellano' | cut -c61- –

+0

@CharlesDuffy: Falscher Platz für deinen Kommentar oder falschen Benutzer? –

Antwort

3

Versuchen Sie folgendes:

printf '%s\n' *pattern*/ 

, wenn Sie alle auf der gleichen Linie bevorzugen:

echo *pattern*/ 

oder Array:

arr=(*pattern*/) 
printf '%s\n' "${arr[@]%/}" 
20

Sie sind wahrscheinlich nach dem -d Schalter ls:

ls -d *pattern*/ 
+0

Und das Muster ?? –

+0

@ JorgeVegaSánchez: Ich denke, das ist "a" –

+0

@sputnick: Ja, aktualisiert, danke. – choroba

-1

Das funktioniert für mich.

Aber es gibt auch die Verzeichniseigenschaften, Berechtigungen, Datum usw. aus und ich möchte nur den Verzeichnisnamen anzeigen.

ls -t | grep '^d' | grep 'pattern' 
+0

Wenn Sie nur die Namen wollen, die keinen Vorteil gegenüber 'printf '% s \ n' * /' ('* /', im Gegensatz zu '*', erweitert nur auf Verzeichnisse) - aber ist viel langsamer und möglicherweise fehlerhaft. –

Verwandte Themen