我知道这个问题已被问过无数次,但我找不到我具体想做什么的答案。
目录结构如下:
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。