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


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:]]*"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.