Wie kann ich verhindern, dass ls in Verzeichnisse abfällt, ähnlich wie bei prune for find?

11

Wenn ich ls *ro*tippe, bekomme ich auch Dateien in Unterverzeichnissen, die dem *ro*Muster entsprechen.
Gibt es eine Option für ls ähnlich zu beschneiden?

Im Idealfall eine Flagge, sonst vielleicht eine Exekutive?

Michael Durrant
quelle

Antworten:

23

Verwenden Sie den -dSchalter:

ls -d *ro*

.....

Mann bei der Arbeit
quelle
Ich habe ein Skript geschrieben, das die Ordnerzugriffsbits (konvertiert in 755- oder 644-Notation), das Datum und die Uhrzeit der Änderung sowie den Ordnernamen abruft und anschließend die Informationen per Textnachricht sendet. Ich brauchte <140 Zeichen. Das hat geholfen, danke.
user208145
4

Du könntest benutzen :

ls | grep ro

Um die Aufgabe zu erfüllen. Pipe, deren Ausgabe lsnur den Inhalt des aktuellen Verzeichnisses ausgibt, grepum selektiv die Dateien auszugeben, die dem Regex-Muster entsprechen.

verdammt
quelle
-1 Wie würde das grep wissen, ob sich die Musterübereinstimmung im Verzeichnis oder in einem Unterverzeichnis befindet?
Michael Durrant
Auch gibt es eigentlich nichts zurück. Versuch es.
Michael Durrant
1
Standardmäßig gibt ls nur den Inhalt des aktuellen Verzeichnisses aus. Wenn Sie diese Ausgabe also an grep übergeben, werden nur die Daten zurückgegeben, die der angegebenen Regex entsprechen. Ich habe den angegebenen Befehl auf meinem Arch-System ausprobiert und er funktioniert einwandfrei.
Darnir
Da grep als Eingabe einen regulären Ausdruck verwendet, dürfen die Sternchen nicht um ro hinzugefügt werden. Wie bereits erwähnt, führen Sie einfach grep ro aus. Dies ist im Vergleich zur Antwort von manatwork ein grober Hack, funktioniert aber einwandfrei.
Darnir
Wenn Sie jedoch eine absurde Anzahl von Dateien haben, kann das Globen in der Antwort von manatwork die Grenze der Befehlszeilenlänge erreichen. Das wird nicht.
Izkata