Существует слишком много продолжения для меня получить мою голову noobie здесь. Я желаю загрузить все файлы, которые заканчивают -123.jpg от множества вложенных каталогов на удаленном сервере. Некоторые из этих каталогов имеют пробелы на их имена. Я думаю, что команда должна быть вроде:
scp -r user@server:/path/to/parent\ directory/*/*/*123\.jpg ./
… , где "parent\каталог" имя каталога с пространством, и указанный путь идет настолько глубоко, как это может, прежде чем это отколется к различным подкаталогам, например, dir/sub dir / [uniquely_id] файл -123.jpg. (Обратите внимание, что эти подкаталоги часто содержат пробелы также, должен то влияние * подстановочный знак),
Я не получаю 'соответствия', возвращенного для этого, или 'никакого такого файла или каталога', если я влезаю в выход пространства. Я думаю поэтому, что это - рекурсия или подстановочный знак, который я имею неправильно.
Заранее спасибо.
При недостатке в расположении сервера тестирования, которое я не знаю, работает ли следующая команда на самом деле, но я думаю, что rsync был бы лучше, чем scp в этом случае, поскольку можно указать в - и исключить шаблоны. Что-то как:
rsync -arvzSH --include "*123.jpg" --exclude "*" user@server:/path/to/parent\ directory/ /path/to/target directory/
может работать. Но Вы лучше проверяете rsync документацию дважды.
Выход имени файла с scp хитер; Ваши аргументы подробно остановились (ре) на удаленной стороне. Символы "Interesting" должны быть двойные заключенный в кавычки, для предотвращения специального вручения локальной оболочкой и удаленным. Я ожидал бы, что оба следующее будут работать на Вас:
scp user@server:'/path/to/parent\ directory/*/*/*123.jpg' ./
scp user@server:'"/path/to/parent directory"/*/*/*123.jpg' ./
Если это сбивает с толку, rsync довольно прост в использовании (как lothar упоминания), и tar передачи по каналу или cpio через ssh довольно легки также.
ssh user@server 'cd /path/to/parent\ directory;
find -name "*123.jpg" -print0 | cpio -0 -o' |
cpio -i -d -v