[О блоге] [наверх] [пред] [2023-04-27 23:09:21+03:00] [9a7015f648c3b55e1c1ff22f8bfd2958dcf2e255]
Темы: [tip]

Поиск в find

https://marc.info/?l=freebsd-current&m=168176556429526&w=2
Неожиданное поведение обнаружили у find, в зависимости от локали:

    $ touch FOO
    $ touch bar
    $ env LANG=C.UTF-8 find . -name '[A-Z]*' -print
    ./FOO
    $ env LANG=en_US.UTF-8 find . -name '[A-Z]*' -print
    ./FOO
    ./bar

Говорят, что надо использовать классы символов:

    $ LANG=en_US.UTF-8 find . -name '[[:alpha:]]*' -print
    ./BAR
    ./foo
    $ LANG=en_US.UTF-8 find . -name '[[:lower:]]*' -print
    ./foo

Вот правда в FreeBSD find их не понимает для -name. Но можно для -regex:

    $ LANG=en_US.UTF-8 find -E /etc/rc.d -regex '.*[[:upper:]]+' -print
    /etc/rc.d/NETWORKING
    /etc/rc.d/FILESYSTEMS
    /etc/rc.d/SERVERS
    /etc/rc.d/DAEMON
    /etc/rc.d/LOGIN

    [оставить комментарий]