Eu sou um usuário iniciante no Linux e estou tentando enviar uma longa lista de arquivos de um computador para outro. A lista de argumentos é muito longa, então estou usando find. Estou tendo problemas para configurar a expressão, no entanto. Alguém pode ajudar?
Aqui está o que eu normalmente digitaria para uma pequena lista de argumentos.
scp ./* phogan@computer/directory...
Aqui está eu acho que isso pode se traduzir em encontrar.
scp find . -name "*" phogan@computer/directory...
Talvez eu possa usar tubulação? Qualquer sugestão ajudaria. Desde já, obrigado.
Você pode fazer isso com apenas um comando
scp
.scp
:Certifique-se de encapsular o
find
comando entre backticks ` e não aspas simples ' .fonte
scp `find <path> -name <expression>` user@host:<path_where_to_copy>
-r
scp -r
é para recursão em uma única entrada (diretório), não para várias entradas (vários arquivos).fonte
grep -l pattern *
eu sugeriria
Observe que essa solução evita ter os nomes de arquivos na linha de comando, onde eles podem ser interpretados como argumentos de linha de comando.
Outra coisa a observar é que os nomes de arquivos podem conter espaços. Isso significa que um loop for no bash pode ter dificuldades com uma lista de nomes de arquivos.
fonte