Simplemente moviendo un directorio dentro de otro usando mv

Simplemente moviendo un directorio dentro de otro usando mv

Me acabo de encontrar con esta rareza: quiero hacer el equivalente a arrastrar un directorio dentro de otro (moverlo). Tarea trivial del día a día para una GUI.

Aquí está mi árbol:

.
├── 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

Quiero pasar Cosine Similarity_filesa Book/, y eventualmente sobrescribirlo si ya está allí. Emito el comando natural:

mv Cosine\ Similarity_files Book/

y me sale el mensaje Directory not emptyWTF!? Pero mejora si le pido que avance un nivel más profundo:

mv Cosine\ Similarity_files Book/Cosine\ Similarity_files

¡Hace obedientemente lo que no haría antes! ¡Escribe el directorio de origen en el directorio de destino! ¡¿¡WTF²!?!

¿Porqué es eso? ¿Tiene algún sentido?

Respuesta1

Cuando ejecuta mv Cosine\ Similarity_files Book/no sucede nada porque existe un directorio con el mismo nombre que no está vacío en el Bookdirectorio.

Como don_crissti indicó en los comentarios anteriores, cuando ejecutó mv Cosine\ Similarity_files Book/Cosine\ Similarity_files, se movió Cosine\ Similarity_filesaBook/Cosine\ Similarity_files/Cosine\ Similarity_files

Si desea sobrescribir cualquier archivo existente dentro del directorio que está moviendo, deberá usar la opción -fo -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.

Ejemplo:mv -f Cosine\ Similarity_files Book/

Nota: -fno sobrescribirá ni fusionará directorios dentro del directorio que está intentando mover. Sólo sobrescribirá archivos.

Si desea fusionar o sobrescribir directorios, puede utilizar rsyncla --remove-source-filesopción.Para más información mira esta respuesta.

información relacionada