Acabei de me deparar com esta estranheza: quero fazer o equivalente a arrastar um diretório para dentro de outro (movê-lo). Tarefa trival do dia-a-dia para uma GUI.
aqui está 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
Quero mudar Cosine Similarity_files
para Book/
, eventualmente sobrescrevendo-o se já estiver lá. Eu emito o comando natural:
mv Cosine\ Similarity_files Book/
e recebo a mensagem Directory not empty
WTF!? Mas fica melhor se eu pedir para ir um nível mais fundo:
mv Cosine\ Similarity_files Book/Cosine\ Similarity_files
Ele obedientemente faz o que não faria antes! ele grava o diretório de origem no diretório de destino!! WTF²!?!
Por que é que? Isto faz algum sentido?
Responder1
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 Book
diretório.
Como don_crissti afirmou nos comentários acima, quando você executou mv Cosine\ Similarity_files Book/Cosine\ Similarity_files
, ele mudou Cosine\ Similarity_files
paraBook/Cosine\ Similarity_files/Cosine\ Similarity_files
Se quiser sobrescrever quaisquer arquivos existentes no diretório que você está movendo, você 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 substituirá ou mesclará diretórios dentro do diretório que você está tentando mover. Isso apenas substituirá os arquivos.
Se quiser mesclar ou sobrescrever diretórios, você pode usar rsync
a --remove-source-files
opção.Para mais informações veja esta resposta.