[О блоге]
[наверх]
[пред]
[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
[оставить комментарий]