Я пытаюсь использовать PuTTY, чтобы соединиться через SSH с Mac и загрузить указанное использование некоторых файлов команды находки. Файлы имеют пробелы в них, которые могут вызывать проблемы, и я не уверен, как указать локальный путь Windows.
Я пробую что-то вроде этого, неудачно до сих пор:
find . -iname "*searchtext*" | xargs -0 scp user@host:{} localpath
Какие-либо идеи?
Если это не возможное использование одной строки, я не возражаю против сценария Bash, который можно назвать через PuTTY?
Вы являетесь лучшими от просто создания zip или tgz файлов на удаленном сервере
zip found-files.zip $(find . -iname "*searchtext*")
И затем просто используйте winscp для загрузки файла found-files.zip. Winscp будет аутентифицировать то же как шпаклевку (пароли или театрализованное представление использования при выполнении). Если Вы предпочитаете командную строку DOS, можно использовать pscp
Я пытаюсь использовать PuTTY, чтобы соединиться через SSH с Mac и загрузить указанное использование некоторых файлов команды находки.
Вы пытаетесь загрузить файлы на свою локальную систему Windows?
Помните, что PuTTY является клиентом SSH. Все, что это делает, отправляют напечатанный текст на Ваш Mac и отображают полученный вывод. Поэтому, когда Вы работаете scp
как это, это работает на Mac, и имена файлов должны быть указаны, как замечено Mac.
Если Вы хотите передать файлы от Mac до Windows, то это scp macpath user@windowshost:windowspath
. (Вы, кажется, имеете, это инвертировало в Вашей команде в качестве примера.)
Это также означает, что Вашему компьютеру Windows нужен сервер SSH, установленный с возможностями SCP, и что он должен позволить поступать соединения SSH.
Я не уверен, как указать локальный путь Windows.
Это зависит от сервера SSH, который Вы установили в Windows. (См. абзац выше.), Но обычно, x:\dir\file
может быть преобразован в /x/dir/file
. Прочитайте руководство.
Файлы имеют пробелы в них, которые могут вызывать проблемы
Да, это вызывает проблему с xargs
. Вы перешли к правильному направлению с xargs -0
, но необходимо сделать то же с find
– find .... -print0
или find .... -printf "%p\0"
.
Если версия find
в Mac OS X не поддерживает ни одного -print0
ни -printf
, можно сойти с рук использование новых строк как разделители. В этом случае не добавляйте специальные опции к find
, но изменение xargs -0
кому: xargs -d '\n'
.
Лучшая альтернатива xargs
find -exec
.
xargs -0 scp user@host:{} localpath
Здесь существует еще одна ошибка. По умолчанию, xargs
не заменяет {}
с именем файла; необходимо конкретно сказать это, с помощью -I "{}"
.
Вы, возможно, перепутали это с -exec
опция в find
, который действительно работает как это:
find . -iname "*searchtext*" -exec scp user@host:{} localpath \;
Выше, я уехал scp
порядок аргументов точно, как это было в Вашем исходном примере. Но как я сказал прежде, это неправильно.