在 git bash 崩溃时搜索所有驱动器 - “无法从文件系统中读取‘/’或以下的文件名:没有这样的文件或目录”

在 git bash 崩溃时搜索所有驱动器 - “无法从文件系统中读取‘/’或以下的文件名:没有这样的文件或目录”

我正在使用适用于 Windows 的 git-bash(即内部 msys2)。

我需要搜索我的所有硬盘。

当我尝试运行find / -type d(和我的搜索模式)时,搜索会在 git 的系统目录中运行,并在/proc/registry/出现以下消息后中止搜索

find: failed to read file names from file system at or below '/': No such file or directory

当我运行时,ls -la /我只看到系统目录。因为我的主目录位于/c/Users/myuser并且挂载显示其他驱动器号已挂载在下面/(例如/c//d/等等)。我确信应该有一种方法可以搜索/并找到例如文件/c/等等/d/

所以问题是:

  • 为什么 find 会根据消息中止搜索?
  • 为什么已安装的 Windows 驱动器对于 ls/find 不可见?
  • 有没有办法用一个命令搜索所有已安装的 Windows 驱动器find?(无需手动列出所有已知的驱动器号)

我发现,有一个错误报告在MSYS2 软件包#1764出现同样的错误,但没有真正的解决方案。

答案1

我没有答案,为什么会出现此错误,或者为什么已安装的驱动器号没有显示在根目录中,但我创建了一个解决方法来搜索所有驱动器:

命令是:

find $(mount | cut -d ' ' -f 3 | grep -x '.\{2\}' | tr '\n' ' ') -type d

它使用子命令来查找已安装的驱动器,并告诉 find 在每个位置进行搜索。

详细解释:

  • mount:以如下格式显示所有已挂载的驱动器C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto)
  • cut -d ' ' -f 3:将 mount 的输出拆分成几部分并返回每行的 3.col
  • grep -x '.\{2\}':查找所有长度正好为 2 位数字的行(例如/c),并删除其余部分
  • tr '\n' ' ': 用空格代替换行符

最终执行的命令例如

find /c /d /e -type d

如果您有 3 个已安装的驱动器号。

相关内容