find: argumento faltando para '-exec' no Cygwin

0

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?

    
por gourav sachdeva 25.08.2017 / 09:29

2 respostas

0

O formato adequado de find é:

find components -iname "*.html" -exec rsync -R {} \;
    
por 25.08.2017 / 09:33
3

Duas questões da formulação original da pergunta:

  1. O comando executado com -exec deve ser finalizado por ; .
  2. O comando 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)

    
por 25.08.2017 / 10:16