Список пронумерованных файлов с использованием подстановочной последовательности с предопределенным диапазоном

Чтобы смонтировать каталог на удаленной машине как виртуальный диск на машине Windows через SSH, вы можете использовать Dokan SSHFS .

Тогда к ним можно будет получить доступ с помощью любого файлового менеджера, а также вашего веб-браузера.

Однако Dokan SSHFS не использует замазку: вместо этого используется собственная реализация протокола SSH.

2
24.05.2016, 18:28
2 ответа

Обратите внимание, что ​​{1..20} не является оператором подстановки символов / подстановки. Это особая форма раскрытия фигурных скобок. автор zsh и скопирован с ограничениями и вариациями ksh93 и bash .

foo_ {0001..0030} .nc не расширяется в список совпадающих файлов он расширяется до foo_0001.nc , foo_0002.nc , ... foo_0030.nc независимо от того, являются ли файлы e xist или нет.

bash имеет то ограничение, что содержимое не может быть изменяемым. ksh93 и zsh не имеют этого ограничения.

Итак ls -d foo _ {$ ns .. $ ne}.nc будет работать в этих оболочках.

zsh также имеет оператор подстановки / подстановки для сопоставления диапазонов десятичных чисел.

ls -d foo_<1-30>.nc

Будет расширен до списка совпадающих файлов. Если вы хотите ограничить его четырьмя цифрами, дополненными нулями, вам понадобится другой оператор:

ls -d foo_(<1-30>~^????).nc # needs extendedglob

( ~ is кроме ( and-not ) ), ^ равно не , поэтому ~ ^ равно , а не-не , поэтому и ).

Оператор не работает с переменными (поскольку он перекрывается с операторами перенаправления, он работает только при следовании <[цифры] - [цифры]> шаблон, чтобы максимально избежать конфликтов с перенаправлениями). Однако вы можете использовать этот синтаксис, чтобы обойти это:

ls -d ${~:-foo_<$ns-$ne>.nc}

Или более разборчиво:

pattern="foo_<$ns-$ne>.nc"
ls -d $~pattern
1
27.01.2020, 21:59

Раскрытие фигурных скобок происходит до раскрытия переменных, поэтому в них нельзя использовать переменные. Вместо этого вы можете использовать seq :

seq -f foo_%03.0f.nc $ns $ne
3
27.01.2020, 21:59

Теги

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