在 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\system32
Cygwin 中的目录路径不是/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.dll
will 相同的结果。