Encuentre un archivo donde el nombre comience con una letra mayúscula

14

Estoy tratando de encontrar todos los archivos cuyo nombre comienza con una letra mayúscula. He intentado usar el siguiente comando:

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

Se trata de encontrar caminos con solo letras minúsculas. Los siguientes trabajos:

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

Al igual que:

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

He probado todas las diferentes opciones para regextype, con el mismo resultado.

¿Por qué findincluye letras minúsculas [A-Z]? Pensé que la expresión regular para eso era [a-zA-Z]. ¿Hay alguna forma de especificar un rango de solo letras mayúsculas find?

Karl Bielefeldt
fuente
55
¿Qué hay de LC_ALL=C find ...?
mikeserv
Eso funciona. ¿Podría explicar por qué en una respuesta?
Karl Bielefeldt
3
Podría intentarlo, pero entonces podrías perderte esto .
mikeserv
1
¿Por qué escapas de la barra ( \/)? ¿Qué hallazgo estás usando ( find --version)?
Cristian Ciupitu
1
Escapar /solo es necesario cuando lo está utilizando como delimitador, por ejemplo, en s/foo\/bar/foobar/. (Pero a menudo puede usar algún otro delimitador:. s#foo/bar#foobar#)
deltab

Respuestas:

35

No necesitas usar -regex. Puedes usar -nameen su lugar.

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