Wie zeige ich alle Dateien in einem Verzeichnis mit einem Namen, der eine Nummer enthält?

437
StPatrick

Wie zeige ich, dass alle Dateien in einem Verzeichnis mit einem Namen eine Nummer enthalten? Ich habe es versucht

ls [0-9] textfiles 

( textfiles) ist mein Verzeichnis.

So zeigt mir mein Linux Pocket Guide. Ich versuche nur, alle Dateien anzuzeigen, die im Namen eine Nummer enthalten. Ich habe ungefähr 20 Variationen ausprobiert, die ich in meinem Buch und online gefunden habe.

1

2 Antworten auf die Frage

6
Kamil Maciorowski

Sie wollen wahrscheinlich etwas

ls textfiles/*[0-9]* 

oder (wenn " textfilesist mein Verzeichnis" bedeutet, dass Sie sich im Verzeichnis befinden):

ls *[0-9]* 

Beachten Sie, dass sich diese Befehle nicht auf reguläre Dateien beschränken. Verzeichnisse, Symlinks, Named Pipes und andere Einträge können übereinstimmen. Im weitesten Unix-Kontext sind dies alles "Dateien", und ein solcher Abgleich erfolgt nur hinsichtlich ihrer Namen. Um reguläre Dateien voneinander zu unterscheiden, benötigen Sie ein anderes Tool wie find.

Ich bin überrascht, dass Ihnen jeder Leitfaden empfohlen hat, ls [0-9] textfilesda er im Zusammenhang mit Ihrer Frage wenig Sinn macht.

Zur Decodierung *[0-9]*beziehen sich auf man 7 globoder zB diesem Artikel, Standard - Wildcards (Globbing Muster) Abschnitt. In den obigen Fällen ist es erwähnenswert, dass die Hülle (nicht ls!) Das angegebene Muster erweitert.

Vielen Dank. Das hat super funktioniert. StPatrick vor 5 Jahren 0
@StPatrick Bitte nehmen Sie an unserer kurzen [Tour] teil, um zu erfahren, was Sie mit einer Antwort tun können, die Ihr Problem löst. Kamil Maciorowski vor 5 Jahren 0
1
Xen2050

findfunktioniert auch und kann nur Dateien anzeigen, zum Beispiel im aktuellen dir ( .):

find . -type f -name "*[0-9]*" 

Es ist standardmäßig rekursiv, aber verwenden Sie -maxdepth 1, um dies zu vermeiden.