Com o GNU cp
, a opção -T
é usada para garantir que o diretório de origem não seja colocado dentro do diretório de destino. Não fará com que o conteúdo do diretório de destino seja removido.
A documentação informativa sobre isso ( info '(coreutils)Target directory'
) diz (está usando mv
como exemplo):
-T
--no-target-directory
Do not treat the last operand specially when it is a directory or a symbolic link to a directory. This can help avoid race conditions in programs that operate in a shared area. For example, when the command
mv /tmp/source /tmp/dest
succeeds, there is no guarantee that/tmp/source
was renamed to/tmp/dest
: it could have been renamed to/tmp/dest/source
instead, if some other process created/tmp/dest
as a directory. However, ifmv -T /tmp/source /tmp/dest
succeeds, there is no question that/tmp/source
was renamed to/tmp/dest
.
Observe que mv -T source dest
falhará se dest
não estiver vazio.
Para substituir o conteúdo de bar
pelo de foo
no seu exemplo, use
rm -rf bar
cp -r foo bar
ou
rsync --archive --delete foo/ bar