Знайдіть файл, де ім'я починається з великої літери


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 ...?
mikeserv

Це працює. Чи можете ви пояснити, чому у відповіді?
Карл Білефельдт

3
Я міг би спробувати, але тоді ви можете пропустити це .
mikeserv

1
Чому ви рятуєтеся косою рискою ( \/)? Також яку знахідку ви використовуєте ( find --version)?
Крістіан Цюпіту

1
Утеча /необхідна лише тоді, коли ви використовуєте її як роздільник, наприклад в s/foo\/bar/foobar/. (Але часто ви можете використовувати якийсь інший роздільник:. s#foo/bar#foobar#)
дельтаб

Відповіді:


35

Не потрібно використовувати -regex. Ви можете використовувати -nameзамість цього.

find . -type f -name "[[:upper:]]*"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.