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?


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:]]*"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.