O formato adequado de find
é:
find components -iname "*.html" -exec rsync -R {} \;
Estou tentando obter arquivos HTML da pasta component
e criando a nova pasta component
e tentando inserir essa pasta component
(New) na pasta build
para a qual estou usando o código fornecido:
find components -iname '*.html' -exec rsync -R {} ./build/ \;
Mas quando faço isso, estou recebendo o erro fornecido:
find: missing argument to -exec
Por favor, me dê alguma solução para resolver isso?
Duas questões da formulação original da pergunta:
-exec
deve ser finalizado por ;
. rsync
está malformado. Isso é o que eu penso que você pode querer:
find components -iname "*.html" -exec rsync -R {} ./build/ ';'
Para copiar um arquivo com rsync
, você terá que dizer onde deve ser copiado para . Aqui, presumi que você deseja copiar todos os arquivos encontrados para ./build/
.
Após a atualização da pergunta:
O comando que find
executa deve ser terminado por um ;
-character que esteja protegido do shell. A maneira correta de proteger o ;
do shell é citá-lo usando \;
ou ';'
¹.
Como você está usando \;
, você "desfaz" a citação de ;
e, em vez disso, o processo find
verá apenas uma \
final. Como não é possível ver nenhum ;
, ele se queixará de argumentos ausentes.
Você mencionou npm
em algum lugar. Este é um gerenciador de pacotes para JavaScript. Desde que você mencionou isso, isso me leva a acreditar que você não está executando find
da linha de comando, mas de algum tipo de script. As cotações (potencialmente) funcionariam de maneira diferente de um script, dependendo das regras gramaticais e sintáticas daquela linguagem de script.
Para resolver esse problema adequadamente, seria mais útil ver a invocação real de find
no contexto do script que a invoca.
Até que a pergunta seja atualizada com essas informações, a resposta que eu dei aqui é o mais próximo possível de qualquer pessoa.
¹ (ou ";"
ou mais formulários exóticos como $';'
ou $'\u003b'
dependendo do shell, ';'
sendo o mais portátil)