Apenas movendo um diretório dentro de outro usando mv

2

Acabei de me deparar com essa estranheza: quero fazer o equivalente a arrastar um diretório dentro de outro (movê-lo). Tarefa do dia-a-dia do Trival para uma GUI.

aqui é minha árvore:

.
├── assemble.py
├── Basic Information Retrieval.ipynb
├── Basic Information Retrieval.tex
├── Book
│   ├── book.aux
│   ├── book.log
│   ├── Book_master.tex
│   ├── book.out
│   ├── book.pdf
│   ├── book.tex
│   ├── book.toc
│   ├── build.sh
│   ├── chapter_0.tex
│   ├── chapter_1.tex
│   ├── chapter_2.tex
│   ├── chapter_3.tex
│   ├── chapter_4.tex
│   ├── chapter_5.tex
│   ├── Cosine Similarity_files
│   │   ├── Cosine Similarity_17_0.png
│   │   └── Cosine Similarity_22_0.png
│   ├── Language Models_files
│   │   └── Language Models_5_0.png
│   └── nb_preamble.tex
├── convert_to_latex.sh
├── convert_to_pdf.sh
├── corpus_zika
├── Cosine Similarity_files
│   ├── Cosine Similarity_17_0.png
│   └── Cosine Similarity_22_0.png
├── Cosine Similarity.ipynb
├── Cosine Similarity.tex
├── Dicionario_zika.dict
├── Language Models_files
│   └── Language Models_5_0.png
├── Language Models.ipynb
├── Language Models.tex
├── Probabilistic Text Models.ipynb
├── Probabilistic Text Models.tex
├── README.md
├── Topic Modeling.ipynb
└── Topic Modeling.tex

Eu quero mover Cosine Similarity_files para Book/ , eventualmente, sobrescrevendo-o se já estiver lá. Eu emito o comando natural:

mv Cosine\ Similarity_files Book/

e eu recebo a mensagem Directory not empty WTF !? Mas fica melhor se eu pedir que ele se mova um nível mais profundo:

mv Cosine\ Similarity_files Book/Cosine\ Similarity_files

Ele cumpre o que não faria antes! ele grava o diretório de origem no diretório de destino !! WTF²!?!

Por que isso? Faz algum sentido?

    
por fccoelho 06.06.2016 / 21:49

1 resposta

4

Quando você executa mv Cosine\ Similarity_files Book/ , nada acontece porque existe um diretório com o mesmo nome que não está vazio no diretório Book .

Como don_crissti declarou nos comentários acima, quando você executou mv Cosine\ Similarity_files Book/Cosine\ Similarity_files , moveu Cosine\ Similarity_files para Book/Cosine\ Similarity_files/Cosine\ Similarity_files

Se você quiser substituir quaisquer arquivos existentes no diretório em andamento, terá que usar a opção -f ou -i .

-f
--force
     Remove existing destination files and never prompt the user.

-i
--interactive
     Prompt whether to overwrite each existing destination file,
     regardless of its permissions.  If the response does not begin
     with 'y' or 'Y', the file is skipped.

Exemplo: mv -f Cosine\ Similarity_files Book/

Nota: -f não irá sobrescrever ou mesclar diretórios dentro do diretório que você está tentando mover. Ele só irá sobrescrever arquivos.

Se você quiser mesclar ou sobrescrever diretórios, poderá usar rsync com a opção --remove-source-files . Para mais informações, veja esta resposta .

    
por 06.06.2016 / 22:13

Tags