这可能是错误的论坛,但无论如何我都会试一试。我在 Windows 10 Enterprise 中运行 ubuntu 子系统:
root@hostname:/directory/stuff# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
该文件位于 repo 中,并显示为ls
and git status
,但不在 GUI 中(在资源管理器视图选项中检查了“隐藏文件”)或dir
在 cmd 中显示。这是一个“隐藏”文件,当您打开 Excel 电子表格时会显示 - 只有电子表格被关闭。即使我再次打开和关闭,它也无法移除。chmod
我可以用and修改所有权和权限chown
,这很奇怪,我不能做任何其他事情:
root@hostname:/directory/stuff# ll
total 14600
...
-rwxrwxrwx 0 my_name my_name 165 Feb 14 13:25 '~$Copy of Full Compilation of Databases for Audit.xlsx'*
root@hostname:/directory/stuff# chown root: ~\$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
root@hostname:/directory/stuff# ll
total 14600
...
-rwxrwxrwx 0 root root 165 Feb 14 13:25 '~$Copy of Full Compilation of Databases for Audit.xlsx'*
我试过了:
root@hostname:/directory/stuff# ls -i
...
1688849860795414 '~$Copy of Full Compilation of Databases for Audit.xlsx'
....
root@hostname:/directory/stuff# find . -inum 1688849860795414 -exec rm {} \;
rm: cannot remove './~$Copy of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# rm -i -- ./*
...
rm: remove regular file './~$Copy of Full Compilation of Databases for Audit.xlsx'? y
rm: cannot remove './~$Copy of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# ls -1b
...
~$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
root@hostname:/directory/stuff# rm ~$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx
rm: cannot remove '~ of Full Compilation of Databases for Audit.xlsx': No such file or directory
....
root@hostname:/directory/stuff# mv ~\$Copy\ of\ Full\ Compilation\ of\ Databases\ for\ Audit.xlsx just_a_file.xlsx
mv: cannot move '~$Copy of Full Compilation of Databases for Audit.xlsx' to 'just_a_file.xlsx': No such file or directory
任何人都可以添加到这将是伟大的!
更正:
在上面,我说我看不到来自CMD的文件dir
,但我可以dir /a
- 所以 windows 在某种程度上可以看到它。但是,即使从 CMD 中,我仍然无法删除它(奇怪的是它在此处完成制表符)。
C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff>dir /a
Volume in drive C has no label.
...
2022-02-14 13:25 165 ~$Copy of Full Compilation of Databases for Audit.xlsx
...
C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff>del "~$Copy of Full Compilation of Databases for Audit.xlsx"
Could Not Find C:\Users\me\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\directory\stuff\~$Copy of Full Compilation of Databases for Audit.xlsx
您很可能有某种 WSL 文件系统损坏。我不会这么快就得出这个结论,但是:
很明显,您使用的是 WSL 版本 1,因为您可以
rootfs
从 CMD 中看到目录。这在 WSL2 中是不可能的,因为它将其文件系统存储在一个虚拟磁盘 (ext4.vhdx
) 中,该磁盘无法从 CMD 访问。您正在
rootfs
从 Windows 应用程序(例如 CMD)访问该目录。如果您这样做是为了删除该文件,我担心您使用相同的路径从 Excel 创建或编辑文件。已知访问该目录会导致 WSL 文件系统损坏。从该页面引用:
这听起来像你正在经历的。
(旁注,尽管它不适用于您的情况:无论位置如何,说“不要访问 ... Linux 文件
rootfs
”更准确,因为您可以将 WSL1 实例放置在AppData
.)如果在任何时候,您使用 Excel、Windows 版 Git 或任何其他 Windows 工具访问了该路径,则很容易导致您看到的锁定。
请注意,如果您的用例(和计算机)支持使用 WSL2,则 WSL2 的文件系统更加健壮。
另请注意,正如 Microsoft 博客所述,您可以从 Windows 访问 WSL 文件。只是您需要使用
\\wsl$\<distroname>
路径才能安全地执行此操作。对于“建议的解决方案”,我将从几天前在 Ask Ubuntu 上提供的类似问题的答案中复制/粘贴,尽管我从未收到该海报关于他们是否成功恢复的回复使用这些说明:
潜在的解决方案:
我假设您已重新启动 PC,但如果没有,请尝试以防万一,以确保已释放任何手柄/锁。它的工作机会相对较小,但值得一试。
如果这不起作用,我会推荐以下方法来尝试修复 WSL1 实例。
wsl --export
基本上通过/往返 WSL1 实例wsl --import
。此过程执行的tar
往返可能(希望)在归档或取消归档时删除损坏的文件(或至少锁定)。从 PowerShell:
查看该文件在该新实例中是否已消失或可删除。
如果是这样,并且如果在新实例中其他一切看起来都不错,那么:
/etc/wsl.conf
通过文件设置该实例中的默认用户名。wsl
无论何时运行,新实例都将是默认实例。最后,使用以下命令删除原始损坏的实例:
重要提示:这是一种破坏性操作。确保一切都按预期工作。从好的方面来说,我们已经进行了备份......
您还可以卸载当时从商店安装的 Ubuntu“应用程序”。
您将通过
wsl
(如果您还没有)或 Windows 终端启动,因为ubuntu.exe
(或ubuntu2004.exe
)命令将消失。我不确定哪些星星对齐,但今天早上我能够删除该文件。这可能是因为我关闭了电脑带回家,然后锁被清除了,但我不知道我是否能确定。为了删除它,我只是将 repo 拉到了适当的 Linux 环境中——Linux Mint 在同一台机器上的 VM 上运行——不是说它必须是 VM——或者在有问题的同一台 Windows 计算机上,但它是,所以你去。因为它是一个合适的 Linux 环境,所以我可以在 nemo 中删除它。我可以发誓这个特定的文件在我昨天同步的时候没有被拉下来,但是今天它做到了,我删除了这个小虫子。当我提交并推送,然后拉上 Windows 机器上的 Ubuntu 子系统时,该文件被删除:
所以你有它。