como parar cp: substituir './xxx'? pronto


19

Como posso parar o comando cp de solicitar a substituição. Quero sobrescrever todos os arquivos sem precisar voltar ao terminal. Como esses arquivos são grandes e levam algum tempo para serem concluídos.

Eu tentei usar a opção -f. Ele ainda pergunta se eu quero substituir.

   -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

Respostas:


17

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

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

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


11
A whereis cpmostrará onde está o comando. Assim, você poderá chamar o comando real em vez do alias.
AnthonyB

12

Depois de ver esta solução. Pude ver que o recurso de alias do bash estava causando os problemas. http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

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

Ele recomenda

unalias cp

Ainda quero manter o alias que simplesmente não quero que se aplique a esta instância. Minha solução é usar o binário com um caminho completo, para que a função do alias do bash não substitua. Isso funciona muito bem.

/bin/cp -f /media/somedir/somefiles* .  

4

Infelizmente, no Linux, o comando copy "cp" não tem uma opção para responder automaticamente a essa pergunta 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 "yes" do Unix. Este comando produzirá uma sequência repetidamente até ser eliminada.

Se queremos 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 queremos evitar a substituição de qualquer arquivo no diretório de destino, você pode usar o comando "yes" para responder a todas as perguntas com um "n" não.

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.