Cygwin:“find / -name libstdc++-6.dll”未显示结果

Cygwin:“find / -name libstdc++-6.dll”未显示结果

在 Windows 资源管理器中,当我搜索 时libstdc++-6.dll,它会返回六个结果。我尝试在 Cygwin 中使用 进行类似的文件名搜索find,但没有显示任何结果。

find / -name libstdc++-6.dll

我的语法正确吗?

这应该调用 Cygwin 查找,因为which find返回/bin/find

更新

find /c/strawberry/ -name libstdc++-6.dll可以工作,但不能从 root 运行。

答案1

您的语法是正确的;但这里的问题是 Cygwin 对文件系统的看法有点奇怪。

在 Cygwin 中,根目录/指向 Windows 文件系统中 Cygwin 安装的根目录,通常是c:\cygwin。要访问该目录之外的任何内容,通常必须使用/cygdrive/[drive letter];例如,c:\windows\system32Cygwin 中的目录路径不是/c/windows/system32而是/cygdrive/c/windows/system32

避免这种烦恼的常用方法是创建/指向 中各种驱动器号的符号链接/cygdrive,例如ln -s /cygdrive/c /c;如果您能够使用诸如 之类的路径访问 Cygwin 根目录之外的文件/c/windows/...,那是因为存在这样的符号链接,无论是手动创建的还是自动创建的。

这种方案在大多数情况下都行之有效,但并非所有程序都会自动遵循符号链接,而find这样的程序;find /c/strawberry/ ...之所以有效,是因为你find从符号链接的“远”端开始,但find / ...并不有效,因为它从“近”端开始,默认情况下不会遵循符号/c链接。要产生所需的行为,请将-L选项传递给 find;find -L / -name libstdc++-6.dll应该会出现与find /c/strawberry -name libstdc++-6.dllwill 相同的结果。

相关内容