WSL 在 Windows 中从 Ubuntu

问题描述

说我在 Windows 中的用户名是“John” (C:\Users\John") 我在 WSL Ubuntu 中的用户名可能是“john”(/home/john)。我说可能是因为我认为 WSL 允许您选择一个名称,但我将始终选择与我的 Windows 帐户相同的名称,因此这对我来说不是问题。

我想以编程方式从 WSL 中查找 Windows 文件夹。所以我知道 Windows 中的用户文件夹位于 /mnt/c/Users 并且我知道我的 WSL 名称john,但我不知道 Windows 名称john 还是 {{1 }} 或 John 等。Linux 在区分大小写方面很严格(我认为这是微软为未来做出的一个明智决定的一个领域——对区分大小写过于严格将在未来几十年仍然是一个麻烦) 所以我不能只说 JOHN ,因为如果名称完全 /mnt/c/users/john 不区分大小写,那将会失败。

有没有一种方法可以让我查找 john 并指示 Linux 只找到匹配类似内容的任何路径,无论使用哪种情况? Windows / PowerShell 方式的绝妙部分是认情况下不区分大小写,并且仍然可以在需要时打开敏感度。我知道他们为什么在早期这样做,但我从未看到允许像 /mnt/c/users/johnstuffStuff、{ {1}} 能够与不同的对象在同一位置共存甚至是有价值的(在现实世界中 - 严格的区分大小写已经远远超过其销售日期)。

解决方法

尝试以下操作:

find /mnt/c/Users -maxdepth 1 -type d -regextype posix-extended -regex '/mnt/c/Users/([Jj][Oo][Hh][nN])'

使用查找和搜索大写或小写组合的正则表达式。

这也可以使用 -iregex 来完成,它表示不区分大小写的正则表达式搜索:

find /mnt/c/Users -maxdepth 1 -type d -regextype posix-extended -iregex '/mnt/c/Users/john'