Простое перемещение каталога внутри другого с помощью mv

Простое перемещение каталога внутри другого с помощью mv

Я только что наткнулся на эту странность: я хочу сделать эквивалент перетаскивания каталога внутрь другого (переместить его). Тривиальная повседневная задача для GUI.

вот мое дерево:

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

Я хочу перейти Cosine Similarity_filesв Book/, в конечном итоге перезаписав его, если он уже там есть. Я даю естественную команду:

mv Cosine\ Similarity_files Book/

и я получаю сообщение Directory not emptyWTF!? Но становится лучше, если я попрошу его перейти на один уровень глубже:

mv Cosine\ Similarity_files Book/Cosine\ Similarity_files

Он добросовестно делает то, чего раньше не делал! Он записывает исходный каталог в целевой!! WTF²!?!

Почему так? Есть ли в этом смысл?

решение1

При выполнении mv Cosine\ Similarity_files Book/ничего не происходит, поскольку в каталоге существует каталог с таким же именем, который не является пустым Book.

Как сказал don_crissti в комментариях выше, когда вы выполнили mv Cosine\ Similarity_files Book/Cosine\ Similarity_files, он переместился Cosine\ Similarity_filesвBook/Cosine\ Similarity_files/Cosine\ Similarity_files

Если вы хотите перезаписать какие-либо существующие файлы в перемещаемом каталоге, вам придется использовать опцию -fили -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.

Пример:mv -f Cosine\ Similarity_files Book/

Примечание: -fне перезапишет и не объединит каталоги внутри каталога, который вы пытаетесь переместить. Он только перезапишет файлы.

Если вы хотите объединить или перезаписать каталоги, вы можете использовать rsyncэту --remove-source-filesопцию.Для получения дополнительной информации посмотрите этот ответ.

Связанный контент