поиск способа дождаться появления файла с неизвестным именем в каталоге, а затем что-то делать с ним

Обратите внимание, что не 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:]])
0
27.01.2019, 01:24
1 ответ

Я думаю, что inotify сделает то, что вы хотите, но вам придется запустить его на сервере, который экспортирует файл. Inotify взаимодействует с ядром, поэтому он не будет работать (Я полагаю )на клиенте nfs.

0
28.01.2020, 04:03

Теги

Похожие вопросы