Найдите файл, имя которого начинается с заглавной буквы

14

Я пытаюсь найти все файлы, имя которых начинается с заглавной буквы. Я попытался с помощью следующей команды:

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

Он находит пути только строчными буквами. Следующие работы:

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

Так же как и:

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

Я пробовал все разные варианты regextype, с тем же результатом.

Почему findстрочные буквы в [A-Z]? Я думал, что регулярное выражение для этого было [a-zA-Z]. Есть ли способ указать диапазон только заглавных букв в find?

Карл Билефельдт
источник
5
Как насчет LC_ALL=C find ...?
Микесерв
Это работает. Не могли бы вы объяснить, почему в ответе?
Карл Билефельдт
3
Я мог бы попробовать, но тогда вы можете пропустить это .
mikeserv
1
Почему вы избегаете косой черты ( \/)? Кроме того, что находка вы используете ( find --version)?
Кристиан Чиупиту
1
Экранирование /необходимо только тогда, когда вы используете его как разделитель, например, в s/foo\/bar/foobar/. (Но часто вы можете использовать какой-то другой разделитель:. s#foo/bar#foobar#)
deltab

Ответы:

35

Вам не нужно использовать -regex . Вы можете использовать -nameвместо этого.

find . -type f -name "[[:upper:]]*"
Костас
источник