Copiar arquivos existentes sem confirmação?

17

Preciso copiar e sobrescrever uma grande quantidade de arquivos, usei o seguinte comando:

# cp -Rf * ../

Mas sempre que um arquivo com o mesmo nome existe na pasta de destino, recebo esta pergunta:

cp: overwrite `../ibdata1'? 

O problema é que tenho cerca de 200 arquivos que serão sobrescritos e não acho que pressionar Y then Enter200 vezes seja o caminho certo.

Então, qual é o caminho certo para isso?

Itai Ganot
fonte

Respostas:

37

Você pode fazer yes | cp -rf myxx, ou se você fizer isso como root - seu .bashrc ou .profile possui um alias de cp para cp -i, a maioria dos sistemas modernos faz isso para perfis raiz.

Você pode ignorar temporariamente um alias e usar a versão sem alias de um comando, prefixando-o com \, por exemplo, \ cp

TBI Infotech
fonte
4
+1 para apontar como ignorar um alias. Tentou -1 para a solução de força bruta.
Hennes
5
+! para a yesfunção de tubo - muito útil!
Andrew Newby
14

Você percebe que o RHEL e o CentOS tentaram proteger usuários iniciantes, configurando aliases para o usuário root para evitar a substituição e exclusão acidental de arquivos?

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

A -iopção é o que requer confirmação ao modificar ou remover arquivos existentes. Como a expansão do alias acontece antes da execução do comando, mesmo o uso do --force -f switch ainda exige confirmação.

Você pode remover o alias permanentemente editando o /root/.bashrcarquivo; remova o alias pela duração de uma sessão com unalias cp ou para um único comando, use um dos seguintes:

  • use o caminho completo /bin/cp
  • use aspas "cp" ou 'cp'ao redor do comando
  • use a palavra-chave de comando, por exemplo command cp
  • escapar do comando \cp
HBruijn
fonte