Znajdź plik, w którym nazwa zaczyna się wielką literą


14

Próbuję znaleźć wszystkie pliki, dla których nazwa zaczyna się wielką literą. Próbowałem użyć następującego polecenia:

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

Znajduje ścieżki zawierające tylko małe litery. Następujące prace:

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

Podobnie jak:

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

Wypróbowałem wszystkie różne opcje regextype, z tym samym rezultatem.

Dlaczego findzawiera małe litery [A-Z]? Myślałem, że to regex [a-zA-Z]. Czy jest jakiś sposób, aby określić zakres tylko wielkich liter find?


5
Co LC_ALL=C find ...?
mikeserv

To działa. Czy możesz wyjaśnić, dlaczego w odpowiedzi?
Karl Bielefeldt

3
Mógłbym spróbować, ale możesz tego przegapić .
mikeserv

1
Dlaczego unikasz slash ( \/)? Jakiego znaleziska używasz ( find --version)?
Cristian Ciupitu

1
Ucieczka /jest konieczna tylko wtedy, gdy używasz jej jako separatora, np s/foo\/bar/foobar/. W. (Ale często możesz użyć innego ogranicznika s#foo/bar#foobar#
:.

Odpowiedzi:


35

Nie musisz używać -regex. Zamiast tego możesz użyć -name.

find . -type f -name "[[:upper:]]*"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.