como parar o cp: sobrescrever './xxx'? pronto

16

Como posso parar o comando cp de solicitar a sobrescrever? Eu quero sobrescrever todos os arquivos sem ter que voltar ao terminal. Como estes são arquivos grandes e demoram um pouco para serem concluídos.

Eu tentei usar a opção -f. Ainda pergunta se quero sobrescrever.

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite './somefilesxxx'? y
    
por nelaaro 10.09.2012 / 12:30

3 respostas

15

Além de chamar /bin/cp , você pode fazer um dos seguintes:

\cp -f ...
command cp -f ...

No entanto, eu concordo que você não deve se acostumar a usar um alias como cp -i ou rm -i - se você se sentar em uma concha diferente, você não terá a rede de segurança da qual você se tornou dependente .

    
por 10.09.2012 / 15:36
12

Depois de ver essa solução. Eu pude ver que o recurso alias do bashes estava causando os problemas. link

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

Ele recomenda

unalias cp

Eu ainda quero manter o alias que eu não quero que se aplique a essa instância. Minha solução é usar o binário com um caminho completo, para que a função alias do bashes não assuma o controle. Isso funciona muito bem.

/bin/cp -f /media/somedir/somefiles* .  
    
por 10.09.2012 / 12:30
2

Infelizmente, no Linux, o comando "cp" de cópia não tem uma opção para responder automaticamente a essa questão com uma resposta "y" ou "n". Há mais de uma solução para esse problema, dependendo do que você deseja fazer. Uma solução é usar o comando "sim" do Unix. Este comando irá gerar uma string repetidamente até ser morto.

Se quisermos sobrescrever todos os arquivos no diretório de destino, você pode usar o comando "yes" para responder a todas as perguntas com um "y". "y" é um valor padrão, portanto, não precisa ser especificado.

yes | cp source/*.txt destination/.

Se quisermos evitar sobrescrever qualquer um dos arquivos no diretório de destino, você pode usar o comando "yes" para responder a todas as perguntas com um não "n".

yes n | cp source/*.txt destination/.

Use "man yes" para mais informações sobre o comando "yes".

    
por 28.08.2014 / 23:59