Rechercher un fichier dont le nom commence par une majuscule

14

J'essaie de trouver tous les fichiers dont le nom commence par une majuscule. J'ai essayé d'utiliser la commande suivante:

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

Il s'agit de trouver des chemins avec uniquement des lettres minuscules. Les oeuvres suivantes:

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

De même que:

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

J'ai essayé toutes les différentes options pour regextype, avec le même résultat.

Pourquoi findinclure des lettres minuscules dans [A-Z]? Je pensais que le regex pour cela était [a-zA-Z]. Existe-t-il un moyen de spécifier une plage de lettres uniquement en majuscules find?

Karl Bielefeldt
la source
5
Et alors LC_ALL=C find ...?
mikeserv
Ça marche. Pourriez-vous expliquer pourquoi dans une réponse?
Karl Bielefeldt
3
Je pourrais essayer, mais vous pourriez manquer ça .
mikeserv
1
Pourquoi échappez-vous à la barre oblique ( \/)? Quelle trouvaille utilisez-vous également ( find --version)?
Cristian Ciupitu
1
L'échappement /n'est nécessaire que lorsque vous l'utilisez comme délimiteur, par exemple dans s/foo\/bar/foobar/. (Mais souvent, vous pouvez utiliser un autre délimiteur s#foo/bar#foobar#
:.

Réponses:

35

Vous n'avez pas besoin d'utiliser -regex. Vous pouvez utiliser à la -nameplace.

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