仅使用 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_filesBook/最终覆盖它(如果它已经存在)。我发出自然的命令:

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选项。欲了解更多信息,请查看此答案

相关内容