[2-57]
набор символов, состоящий из 2
, 3
, 4
, 5
и 7
, в zsh и любом подстановочном знаке и regexp синтаксисе там. Ваш шаблон шарика *[2-57]
соответствует каждому имени файла, последний знак которого является одной из тех пяти цифр.
Я думаю, что Вы - misremembering синтаксис [m,n]
спецификатор шарика. Спецификаторы шарика всегда входят в круглые скобки в конце шаблона, и разделитель диапазона является запятой. Шаблон *([2,57])
расширяется до 2-го, 3-го, …, 57-е соответствия. Порядок расширения по умолчанию является лексикографическим (с некоторым специальным волшебством отсортировать числа в числовом порядке, если numeric_glob_sort
опция установлена); можно управлять им с o
или O
спецификатор шарика (например. *(om[2,57])
соответствовать 57 новым файлам кроме одного нового файла).
for x in /foo/bar/*([2,57]); do print $x; done
Не, что Вы попросили, но связали и возможно полезный для будущих читателей: если Вы хотите перечислить файлы 2 - 57, существуют ли они или нет, можно использовать выражение фигурной скобки диапазона. Эта функция также существует в ударе и ksh.
echo hello{2..57}
И если Вы хотите соответствовать файлам, имя которых содержит число между 2 и 57, можно использовать шаблон <2-57>
. Это характерно для zsh.
$ ls
file1 file2 file3 file57 file58
$ echo file<2-57>
file2 file3 file57
Обратите внимание что шаблон как *<2-57>
вероятно не сделать то, что Вы ожидаете, потому что *
мог соответствовать цифрам также. Например, file58
соответствия *<2-57>
, с file5
соответствие *
часть и 8
соответствие <2-57>
часть. Шаблон *[^0-9]<2-57>
избегает этой проблемы.
офлайновые кэши являются одной вещью, но что Вы просите, является более трудным. Если файл изменяется и на сервере и на клиенте, в то время как эти две машины не подключены, кто-то должен решить который версия оставаться или объединить эти две версии. Требование этого вида ввода данных пользователем, когда эти две машины снова соединяются, не соответствует хорошо модели файловой системы.
Существует несколько средств кэширования NFS, но большинство разработано для кэширования онлайн, для ускорения доступа. Они требуют коммуникации между сервером и клиентом, когда файл изменяется с обеих сторон, таким образом, они не подходят для офлайновых сценариев. То же идет для AFS.
Существуют усилия создать применимую распределенную файловую систему, поддерживающую разъединенную операцию:
Я не убежден, что файловая система является правильным местом для решения этой проблемы. Обработка конфликта является трудной и требует ввода данных пользователем.
Для не использующего высокие технологии решения я рекомендую Unison, двунаправленному синхронизатору файла. Сохраните локальные копии своих файлов и на сервере и на ноутбуке. Сразу после подключения Вашего ноутбука и сразу перед разъединением, выполненный унисон для синхронизации этих двух сторон. Unison скажет Вам, если будет конфликт (и будет работать тихо, если не будет); пока Вы всегда синхронизируетесь при соединении и разъединении, не будет конфликта.
Решение, которое предоставляет больше услуг, но действительно требует некоторого электронного обучения, состоит в том, чтобы использовать некоторое распределенное программное обеспечение управления версиями. Сохраните репозиторий на каждой машине, фиксация каждый раз, когда Вы изменили файл, и не забывают продвигать/вытягивать изменения, когда это возможно.
Если Вы хотите сохранить файлы и синхронизировать их, просто создают локальную копию и синхронизируются, NFS монтируются и Ваша локальная копия с помощью rsync.