我正在尝试使用cp命令并强制覆盖。

我尝试过cp-rf/foo/*/bar,但仍然会提示我确认每个覆盖。


当前回答

我找到了这个

'cp' -rf * /data/danalonso_testing/target/

资料来源:https://superuser.com/questions/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851

其他回答

-n是“不覆盖”,但他的问题与你回答的完全相反。

为了避免这种确认,您可以简单地使用绝对路径运行cp命令,它将避免别名。

/bin/cp源文件目标

cp通常是这样的别名

alias cp='cp -i'   # i.e. ask questions of overwriting

如果确定要进行覆盖,请使用以下命令:

/bin/cp <arguments here> src dest

默认情况下,cp的别名为cp-i。您可以检查它,键入别名,然后可以看到类似的内容:

alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

要解决这个问题,只需使用/bin/cp/from/To命令,而不是cp/from_To命令

如果这是一个小文本文件,您也可以这样考虑:

cat my.cnf > /etc/my.cnf

不确定大型或二进制文件的效率或副作用。

所以我经常遇到这种情况,因为我将cp别名改为cp-iv,我发现了一个很好的技巧。事实证明,尽管-i和-n都取消了以前的覆盖指令,但-f没有。然而,如果您使用-nf,它将增加清除-i的能力。因此:

cp -f /foo/* /bar  <-- Prompt
cp -nf /foo/* /bar <-- No Prompt

很整洁啊/尸体解剖所