Обратите внимание, что не ls
интерпретирует эти глобусы. Эти глобусы расширяются вашей оболочкой в список имен файлов, который передается в качестве аргументов в ls
. Разные оболочки имеют разные возможности по расширению глобусов. bash
имеет несколько расширений по сравнению со стандартными глобусами (заимствованных из ksh88
и включенных с помощью shopt -s extglob
), но все же ограниченных по сравнению с такими оболочками, как zsh
или ksh93
.
С zsh
:
setopt extendedglob
ls -d [[:alnum:]](#c5)
ksh93
:
ls -d {5}([[:alnum:]])
или:
ls -d {5}(\w) # (\w includes underscore in addition to alnums)
или, если вы хотите использовать расширенные регулярные выражения:
ls -d ~(E)^[[:alnum:]]{5}$
С bash
или другими POSIX-оболочками, которые не имеют эквивалентных операторов globbing, вам придется сделать следующее:
ls -d [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]
Обратите внимание, что [[:alnum:]]
включает любой алфавитный символ в текущей локали (не только латинский алфавит, но и английский) и 0123456789
(и, возможно, другие типы цифр). Если вам нужны буквы английского алфавита, называйте символы по отдельности:
c='[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]'
unset -v IFS
ls -d $c$c$c$c$c
Или используйте локаль C:
(export LC_ALL=C
ls -d [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]])
Я думаю, что inotify сделает то, что вы хотите, но вам придется запустить его на сервере, который экспортирует файл. Inotify взаимодействует с ядром, поэтому он не будет работать (Я полагаю )на клиенте nfs.