Trova un file in cui il nome inizia con una lettera maiuscola


14

Sto cercando di trovare tutti i file per i quali il nome inizia con una lettera maiuscola. Ho provato a usare il seguente comando:

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

Sta trovando percorsi con solo lettere minuscole. Le seguenti opere:

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

Come fa:

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

Ho provato tutte le diverse opzioni per regextype, con lo stesso risultato.

Perché findincludere lettere minuscole in [A-Z]? Ho pensato che la regex fosse [a-zA-Z]. Esiste un modo per specificare un intervallo di sole lettere maiuscole find?


5
Che dire LC_ALL=C find ...?
Mikeserv,

Che funzioni. Potresti spiegare perché in una risposta?
Karl Bielefeldt,

3
Potrei provare, ma poi potresti perdere questo .
Mikeserv,

1
Perché stai sfuggendo alla barra ( \/)? Inoltre cosa trovi stai usando ( find --version)?
Cristian Ciupitu,

1
L'escaping /è necessario solo quando lo si utilizza come delimitatore, ad esempio in s/foo\/bar/foobar/. (Ma spesso puoi usare qualche altro delimitatore:. s#foo/bar#foobar#)
deltab,

Risposte:


35

Non è necessario per l'uso -regex. Puoi usare -nameinvece.

find . -type f -name "[[:upper:]]*"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.