В проводнике Windows при поиске libstdc++-6.dll возвращается полдюжины результатов. Я пытаюсь сделать похожий поиск по имени файла в Cygwin с помощью find , но это не дает результатов.

find / -name libstdc++-6.dll

Мой синтаксис правильный?

Это должно вызвать Cygwin find, поскольку which find возвращает /bin/find .

Обновить

find /c/strawberry/ -name libstdc++-6.dll работает, только не от root.

1 ответ1

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 -L / -name libstdc++-6.dll должна вызвать те же результаты, что и find /c/strawberry -name libstdc++-6.dll .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .