Encontre um arquivo em que o nome comece com uma letra maiúscula

14

Estou tentando encontrar todos os arquivos para os quais o nome começa com uma letra maiúscula. Eu tentei usar o seguinte comando:

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

É encontrar caminhos apenas com letras minúsculas. Os seguintes trabalhos:

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

Como faz:

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

Eu tentei todas as opções diferentes para regextype, com o mesmo resultado.

Por que findinclui letras minúsculas [A-Z]? Eu pensei que o regex para isso era [a-zA-Z]. Existe alguma maneira de especificar apenas um intervalo de letras maiúsculas find?

Karl Bielefeldt
fonte
5
Que tal LC_ALL=C find ...?
mikeserv
Isso funciona. Você poderia explicar o porquê em uma resposta?
Karl Bielefeldt
3
Eu poderia tentar, mas você pode perder isso .
mikeserv
1
Por que você está escapando da barra ( \/)? Também o achado que você está usando ( find --version)?
Cristian Ciupitu 25/10
1
O escape /só é necessário quando você o usa como delimitador, por exemplo, no s/foo\/bar/foobar/. (Mas muitas vezes você pode usar algum outro delimitador: s#foo/bar#foobar#.)
deltab

Respostas:

35

Você não precisa usar -regex. Você pode usar em seu -namelugar.

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