复制现有文件而不进行确认?


18

我需要复制和覆盖大量文件,我使用了以下命令:

# cp -Rf * ../

但是,只要目标文件夹上存在同名文件,就会出现以下问题:

cp: overwrite `../ibdata1'? 

问题是我大约有200个文件将被覆盖,我不认为按Y then Enter200次是正确的方法。

那么,正确的方法是什么?

Answers:


38

您可以这样做yes | cp -rf myxx,或者如果您以root用户身份执行-您的.bashrc或.profile在cp -i上具有cp的别名,大多数现代系统都会在root概要文件中使用。

您可以通过在其前面加上\前缀来暂时绕过别名并使用非别名版本的命令,例如\ cp


4
+1表示如何绕开别名。尝试将其设为-1以获取强力解决方案。
Hennes

5
+!对于yes管的功能-非常方便!
Andrew Newby

14

您是否意识到RHEL和CentOS试图通过为root用户设置别名来防止新手用户受到保护,以防止意外覆盖和删除文件?

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

-i修改或删除现有文件时需要进行确认的开关。由于别名扩展发生在命令执行之前,因此即使使用--force -f 开关也将需要确认。

您可以通过编辑/root/.bashrc文件来永久删除别名,在会话持续时间内使用unalias cp 或使用以下命令之一删除别名:

  • 使用完整路径 /bin/cp
  • 使用引号"cp"'cp'命令周围
  • 使用命令关键字,例如 command cp
  • 逃避命令 \cp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.