Поиск в find

Что: 9a7015f648c3b55e1c1ff22f8bfd2958dcf2e255

Когда: 2023-04-27 23:09:21+03:00

Темы: 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

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

Сгенерирован: SGBlog 0.34.0