Вы можете использовать rsync
, который выполнит только один сеанс ssh с удаленным устройством и предоставит ему либо полный список файлов, либо список общих шаблонов файлов. копировать или не копировать. Например,
rsync -navR --exclude='*-[4-9]?.out' --exclude='*-3[3-9].out' --exclude='*-???*.out' myremote:'dir*' mylocaldir
Это исключит такие имена файлов, как file-40.out
с двумя символами от 40 до 99, а также file-33.out
до 39, а также file-100.out
или больше. Запустите команду с параметром -n
, как показано, чтобы собрать список имен, которые будут переданы, и, если все в порядке, удалите параметр, чтобы фактически выполнить копирование.
Обратите внимание: rsync
не поддерживает фигурные скобки {}
в шаблонах подстановки. Альтернативные способы указания файлов для копирования зависят от того, насколько экзотическим является ваш шаблон исключения, но надежный метод состоит в том, чтобы использовать -n
и не использовать шаблоны исключения, чтобы получить полный список имен, а затем отредактировать этот список и предоставить это как --files-from
список файлов. Вам также необходимо удалить dir*
из удаленного пункта назначения:
rsync -av --files-from=list myremote: mylocaldir