搬家之前,我检查了目录,里面有所有的内容。然后我使用以下命令将其移动到 C 驱动器中的目录(我正在使用 WSL):
sudo mv c_dir/ mnt/c/Users/L570/Documents/to_be_compiled/
当我cd
进入时to_be_compiled
,它确实在那里。但它是空的。
我在另一个问题上找到了这个命令:
chown erebus /mnt/c/Users/L570/Documents/to_be_compiled/c_dir/
但这也没有改变任何东西。
我试过了ls -a
,但是里面确实没有文件。
问:我是否丢失了所有文件,或者是权限问题?
答案1
我认为从评论中可以肯定地说,根据当前信息,我们都对本案到底发生了什么感到困惑。如果有帮助的话,我无法在 WSL 上的 Ubuntu 中使用以下场景重现您的问题:
cd /
sudo mkdir c_dir
cd c_dir
sudo touch abc 1 2 3
cd /
sudo mv c_dir/ mnt/c/Users/ntd/Documents/to_be_compiled
该目录/c_dir
已重命名(移动)到to_be_compiled
正确位置的目录,并且所有文件都存在。
也就是说,最佳实践肯定是使用完全限定的目录名称(以 开头/
)而不是您使用的相对形式。我想知道当您运行命令时,这些文件是否位于基于您的工作目录的其他位置mv
。
注意实际的所有权和权限将要根据您是否更改了 中的自动挂载设置而有所不同/etc/wsl.conf
。
使用默认的 WSL 安装,这些文件将归您所有用户一旦它们被移动到Windows驱动器,具有777权限。
我的稍微改变了一下,内容如下/etc/wsl.conf
:
[automount]
options = "metadata,umask=22,fmask=11"
完成此操作后,WSL 尝试模仿实际的 Linux 所有权和权限,因此文件由 拥有root
(因为它们是通过 移动的sudo
),权限为 644。