Suchen Sie eine Datei, deren Name mit einem Großbuchstaben beginnt

14

Ich versuche, alle Dateien zu finden, deren Name mit einem Großbuchstaben beginnt. Ich habe versucht, den folgenden Befehl zu verwenden:

find . -type f -regex '.*\/[A-Z][^/]*'

Es sucht nach Pfaden, die nur Kleinbuchstaben enthalten. Die folgenden Arbeiten:

find . -type f -regex '.*\/[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^/]*'

Ebenso wie:

find . -type f | grep '.*\/[A-Z][^/]*$'

Ich habe alle verschiedenen Optionen für ausprobiert regextype, mit dem gleichen Ergebnis.

Warum findwerden Kleinbuchstaben eingefügt [A-Z]? Ich dachte die Regex dafür wäre [a-zA-Z]. Gibt es eine Möglichkeit, einen Bereich von nur Großbuchstaben in anzugeben find?

Karl Bielefeldt
quelle
5
Was ist LC_ALL=C find ...?
mikeserv
Das funktioniert. Können Sie in einer Antwort erklären, warum?
Karl Bielefeldt
3
Ich könnte es versuchen, aber dann könnten Sie das verpassen .
mikeserv
1
Warum entkommen Sie dem Schrägstrich ( \/)? Welchen Fund verwendest du auch ( find --version)?
Cristian Ciupitu
1
Ein Escaping /ist nur erforderlich, wenn Sie es als Trennzeichen verwenden, z s/foo\/bar/foobar/. B. in . (Aber oft können Sie ein anderes Trennzeichen verwenden:. s#foo/bar#foobar#)
DeltaB

Antworten:

35

Sie müssen nicht verwenden -regex. Sie können -namestattdessen verwenden.

find . -type f -name "[[:upper:]]*"
Costas
quelle