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?


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:]]*"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.