Como executar o equivalente mv de sim | cp -rf nos diretórios?

1

Usando a árvore de diretórios abaixo como exemplo, qual é a melhor maneira de mover o conteúdo de directory/folderA para directory .

Como sobrescrever um arquivo se existir um arquivo com o mesmo nome no destino, por exemplo: directory/folderA/2017/06/info.log e directory/2017/06/info.log .

directory
|-- folderA
|   |-- 2017
|   |   |-- 06
|   |
|   |-- 2016
|   |   |-- 12
|   |   |-- 11
|   |   |-- 10
|
|-- 2017
|   |-- 04
|   |-- 05
|   |-- 06
|
|-- 2016
|   |
    
por Greg 15.07.2017 / 04:09

2 respostas

1

Algo como rsync -a --remove-source-files src/ dest ? Um teste simples mostra que qualquer coisa existente em dest , mas não em src , será preservada. (Observe a barra após src . É necessário aqui.)

Levando a preservação um pouco mais longe, você pode adicionar --ignore-existing para que os arquivos em dest não sejam sobrescritos, mesmo que eles também existam em src . Mas você pode ficar com arquivos em src , pois --remove-source-files se aplica apenas aos arquivos transferidos com êxito para o destino.

De um modo geral, rsync é uma ferramenta muito poderosa com inúmeras opções. (E, proporcionalmente, um pouco de curva de aprendizado ... embora o caso aqui seja bastante direto, parece.) Se alguém pensou em um cenário de cópia antes que haja uma chance decente, ele é coberto em rsync .

    
por 15.07.2017 / 05:32
0
tar -cv /parent_folder/subfolder/* -f - I tar -xv --overwrite /parent_folder/

use tar para empacotar todo o diretório e pipe para unar na pasta pai pode ser a melhor escolha (adicionar -j antes do pipe e depois se você quiser filtrar o arquivo tar através do bzip)

- sobrescrever: sobrescrever o arquivo existente com o arquivo extraído do arquivo tar

    
por 15.07.2017 / 04:37