如何将包含内容的子文件夹移动到不同的源文件夹而不进行复制?

如何将包含内容的子文件夹移动到不同的源文件夹而不进行复制?

我知道这个问题已被问过无数次,但我找不到我具体想做什么的答案。

目录结构如下:

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • 我想尝试将 Subfolder2 及其文件移动到不同的目录。
  • 我不想复制然后删除任何东西,因为我没有足够的空间。
  • 我不想,mv /Main/Sub2/* /Main2/因为这样会把所有内容放在/Main2文件夹中而不是子目录中。
  • 我不想这样做,mkdir /Main2/...因为它是一个非常长的名字(主要是时间戳),我不想手动输入它(并且可能会弄乱它)
  • 据我所知,rsync也会复制文件,所以我不确定它是否有效。

任何建议或其他工具都将不胜感激!

答案1

这是非常简单明了的。

mv /Main1/Sub2 /Main2

这将创建包含原始目录所有内容的目录/Main2/Sub2,并删除目录/Main1/Sub2。如果您不想输入全名,可以使用通配符;*输入足够的字符以将目录名与目录中的所有其他内容区分开来时,只需停止输入名称并以 结尾(小心!):

mv /Main/Sub* /Main2

可能导致此功能无法按预期工作的可能问题:

  • 里面已经有一个/Main2与 同名的目录/Main1/Sub2。这会导致错误directory not empty,因为mv拒绝覆盖现有目录。如果是这种情况,请先重命名(或删除) 中的现有目录/Main2

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • 使用错误的路径。请记住,所有内容都区分大小写,并注意相对路径和~扩展。这些都因当前工作目录而异

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • 您无权写入源目录和/或目标目录。错误消息中会非常明显地显示这一点:mv: cannot move 'thing' to '/place': Permission denied。在这种情况下,您可以运行我最喜欢的命令来解决问题

    sudo !!
    

答案2

明白了:使用sudo mv /Main1/Sub2 /Main2对我来说已经够了。我想主要的区别在于 root。

相关内容