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)