]> Sergey Matveev's repositories - stargrave-blog.git/commit
Поиск в find
authorSergey Matveev <stargrave@stargrave.org>
Thu, 27 Apr 2023 20:09:21 +0000 (23:09 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 27 Apr 2023 20:09:21 +0000 (23:09 +0300)
commit9a7015f648c3b55e1c1ff22f8bfd2958dcf2e255
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent3d6733ba2d517f67d39e4a95ae62b26836017eba
Поиск в 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