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?


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:]]*"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.