Как я могу скопировать и переместить последовательное подмножество файлов?

Используя Ожидать сценарий для отправки трудно кодированного незашифрованного пароля обычно Очень Плохая Идея. При необходимости в scriptable, соединениях SSH без пароля намного лучше использовать аутентификацию пары ключей:

ssh-keygen # and then follow the prompts; don't set a passphrase
ssh-copy-id username@remote.host.example.com

После выполнения так, Вы можете ssh user@remote.host.example.com не будучи должен ввести Ваш пароль.

Можно все еще израсходовать набор мультиплексирования соединения управления с Control директивы в ~/.ssh/config, и закройте основное соединение с ssh -O exit user@remote.host.example.com.

Необходимо также использовать sshутилита простого выполнения управляет удаленно - после того как Вам настраивали аутентификацию пары ключей, Вы можете иметь:

ssh username@remote.host.exameple.com /etc/init.d/dnsmasq restart

в Вашем сценарии и быть все установленным пойти.

2
24.02.2015, 03:59
2 ответа

Выберите диапазон в скобках:

cp PRC{0257..1516} destination/
1
27.01.2020, 22:05

Самый простой способ - использовать числовой диапазон ZSH :

mv PRC<257-1516> /else/where/

Диапазон Оператор соответствует номерам с ведущими нулями или без него, поэтому PRC257 , PRC0257 , PRC00257 и т. Д. Все включены. Вы можете оставить конец диапазона пустым, например, PRC <257 -> Для перемещения всех файлов из 257 внутрь. Неважно, сколько файлов в диапазоне существует. Среди обычных раковин эта функция существует только в ZSH.

Bash, KSH93 и ZSH поддерживает диапазоны в скобках. Это не шаблон, а простое расширение текста, например, A {9..11} расширяется до A9 A10 A11 независимо от того, существуют ли какие-либо из этих файлов.

mv PRC{0257..1516} /else/where

Вы также можете объединить несколько шаров; Это имеет преимущество работы в любой оболочке, но это громоздко, когда ваши границы не являются круглыми номерами.

mv PRC025[7-9] PRC02[6-9][0-9] PRC0[3-9][0-9][0-9] PRC1[0-4][0-9][0-9] PRC150[0-9] PRC151[0-6] /else/where

В качестве альтернативы, вы можете быть более включены во Всем и фильтре.

for x in PRC[0-9]*; do
  n=${x#PRC}
  n=${x%"${x##*[!0]*}"} # strip leading zeroes (beware that numbers with a leading 0 are parsed in octal)
  if [ "$x" -ge 257 ] && [ "$x" -le 1516 ]; then mv "#x" /else/where; fi
done
2
27.01.2020, 22:05

Теги

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