MV:重命名到/: 无效的论点

MV:重命名到/: 无效的论点

在我的 TrueNAS (FreeBSD 13.1) 服务器上,我有一个名为OldHDD我想要重命名的目录,但出现错误:

% mv OldHDD oldhdd
mv: rename OldHDD to oldhdd/OldHDD: Invalid argument

我尝试了该命令的不同变体,但没有一个有效:

% mv ./OldHDD oldhdd
mv: rename ./OldHDD to oldhdd/OldHDD: Invalid argument

% mv -- OldHDD oldhdd
mv: rename OldHDD to oldhdd/OldHDD: Invalid argument

% mv /full/path/to//OldHDD /full/path/to/oldhdd
mv: rename /full/path/to/OldHDD to /full/path/to/oldhdd/OldHDD: Invalid argument

我也尝试过使用mmv,即使它不报告错误,目录名称也不会改变:

% ls
total 1
drwxr-xr-x  3 user  group     3B Apr 10 21:50 OldHDD

% mmv -rv OldHDD oldhdd
OldHDD -> oldhdd : done

% ls
total 1
drwxr-xr-x  3 user  group     3B Apr 10 21:50 OldHDD

我认为目录内容可能有问题,但我可以重命名它包含的子目录就好。

我尝试复制目录以检查元数据是否会导致问题,但复制的目录仍然存在相同的问题。

我唯一一次成功重命名该目录是当我:(1)(错误地)OldHDD仅创建了一个子目录的部分副本,以及(2)在OldHDD.但由于原始目录的大小,我犹豫是否要创建原始目录的 tar 存档。

有人可以解释一下如何重命名这个目录以及这里发生了什么吗?

答案1

NAS 上的文件系统不区分大小写,因此OldHDDoldhdd是相同的文件。但您的操作系统区分大小写,因此它会考虑这些不同的名称。该mv命令询问文件系统目标是否oldhdd是现有目录,答案是肯定的,因为这只是OldHDD.因此mv尝试将源移至此现有目录中。但源是同一个目录,因此这是使目录成为其自身子目录的尝试,文件系统拒绝这样做。

要以仅更改不区分大小写的文件系统上的大小写的方式重命名文件,请使用不区分大小写的中间名称重命名两次。

mv OldHDD oldhdd.temp_name
mv oldhdd.temp_name oldhdd

1但它保留大小写:它会记住其存储的名称的大小写。OldHDDoldhdd是拼写相同文件名的不同方式,但文件系统会记住哪种拼写是所需的拼写。

相关内容