如何在不要求覆盖的情况下复制或移动文件?


8

我尝试过的

root@host [/home1]# cp -f hello /home3
cp: omitting directory `hello'
root@host [/home1]# cp -rf hello /home3
cp: overwrite `/home3/hello/.buildpath'? y
cp: overwrite `/home3/hello/.bash_logout'? y
cp: overwrite `/home3/hello/.project'? ^C

他们总是问我是否要覆盖。使用mv也不起作用。所以我该怎么做?

我尝试过的其他方法:

root@host [/home1]# cp -rf hello /home3
cp: overwrite `/home3/hello/.buildpath'? y
cp: overwrite `/home3/hello/.bash_logout'? y
cp: overwrite `/home3/hello/.project'? ^C
root@host [/home1]# cp -force hello /home3
cp: invalid option -- 'o'
Try `cp --help' for more information.
root@host [/home1]# cp --remove-destination hello /home4
cp: omitting directory `hello'
root@host [/home1]# cp --remove-destination hello /home3
cp: omitting directory `hello'
root@host [/home1]# cp --remove-destination -r hello /home3
cp: overwrite `/home3/hello/.buildpath'? ^C
root@host [/home1]#

2
你能给输出alias cp吗?
拉斐尔·阿伦斯

2
而且,type cp以及ls -l在目标文件之一上可能会提供有用的信息。
CVn

cp是副本。好吧,这可能是别名。那么命令是什么?
user4951 2013年

Answers:


13

cp似乎是导致问题的别名,或者它是一个函数。您可以删除别名/功能:

unalias cp
unset -f cp

如果您只想立即覆盖它,则可以使用以下command命令覆盖任何别名/函数定义:

command cp [...]

如果您想完全删除它,则可能必须查看bash启动文件。


3
\cp也将避免使用别名。
sendmoreinfo 2013年

是的,您是正确的which cp => alias cp='cp -i; /bin/cp。谢谢亚马逊!
格里2015年

8

对于强制覆盖而不要求您使用命令mv和选项“ -f”,请使用man来查看选项。

男MV:

   -f, --force
          do not prompt before overwriting

例:

mv -f test.tmp test.txt

1

尝试cp -rv / sourcefileor目录/ Destinationfolder


他会工作吗?-rv是什么意思?
user4951 2013年

-rv表示递归和冗长。因此,这应该复制文件和子文件夹,并将进度输出到终端。
JNat

1

您可能有一个cp的别名。您可以执行以下操作来覆盖此别名:

\cp -f hello /home3

这样可以避免修改别名设置,因为它仅在此调用中被覆盖。



0

只需执行alias cp=cp,它将覆盖目标,而无需在此会话中询问。如果您希望将其存储为标准行为,请将其存储在中~/.bashrc

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.