Я начинающий пользователь Linux и пытаюсь отправить длинный список файлов с одного компьютера на другой. Список аргументов слишком длинный, поэтому я использую поиск. У меня проблемы с настройкой выражения, хотя. Может кто-нибудь помочь?
Вот что я обычно набираю для краткого списка аргументов.
scp ./* phogan@computer/directory...
Вот я думаю, что это может привести к найти.
scp find . -name "*" phogan@computer/directory...
Может быть, я мог бы использовать трубопровод? Любые предложения помогут. Заранее спасибо.
Вы можете сделать это с помощью одной команды
scp
.scp
:Убедитесь, что
find
команда заключена в кавычки ` а не в одинарные кавычки ' .источник
scp `find <path> -name <expression>` user@host:<path_where_to_copy>
-r
scp -r
предназначен для рекурсии одной записи (каталога), а не для нескольких записей (нескольких файлов).источник
grep -l pattern *
Я бы предложил
Обратите внимание, что это решение позволяет избежать имен файлов в командной строке, где они могут быть интерпретированы как аргументы командной строки.
Еще одна вещь, на которую следует обратить внимание, это то, что имена файлов могут содержать пробелы. Это означает, что цикл for в bash может иметь проблемы со списком имен файлов.
источник