所以我想将文件夹名称从大写字母更改为小写字母,所以我这样做了
mv FOLDER folder
为什么我不需要创建新文件夹?我不应该收到类似这样的错误吗?
folder does not exist
您无法复制到不存在的文件夹中,那么为什么可以移动到其中呢?
答案1
以下两者之间存在差异:
mv oldfolder/* newfolder
当 newfolder 不存在时,并且:
mv oldfolder newfolder
其中 newfolder 不存在。
第一个给出:
mv: target `newfolder' is not a directory
而第二个将把 oldfolder 重命名为 newfolder。
答案2
在 UNIX/Linux 中,“mv” 会执行以下两项操作之一:
- 将文件或目录从当前位置(在一个目录中)移动到新位置(在另一个目录中)。
- 重命名文件或目录,而不将其移动到新位置。
在第二种情况下,重命名目录不会创建新目录,它只会更改已存在目录的名称。
实际上,您的示例执行了两种不同的操作,具体取决于“folder”是否已作为目录存在。如果存在,mv 的工作方式与上述第一种情况相同,即将“FOLDER”移动到“folder”目录中,因此现在为“folder/FOLDER”。另一方面,如果“folder”尚不存在,它只会重命名 FOLDER。
是的,这可能会相当令人困惑!
答案3
在 UNIX 中文件夹是特殊文件。
当你问mv src dst
,mv
获取文件src
并尝试将其移动到 dst
。现在适用几条规则。它们按顺序执行,第一个匹配的规则即被应用:
- 如果
dst
不存在,则它将是目标名称(无论类型如何src
) - 如果
dst
已经存在并且是一个目录,它将被视为小路而不是目的地名称。因此该命令将被理解为mv src dst/src
和src
被移动里面dst
(a 的最终路径是dst/src
) - 如果
dst
已经存在并且不是目录,则仅当src
不是目录。
答案4
mv
也是一个重命名命令。您正在将一个文件夹重命名为新名称。