2

Я хочу использовать команду 'find', чтобы она шла по символическим ссылкам. Однако мне нужно вызывать команду из другого кода (IDL, который не имеет очень хорошего встроенного поиска файлов) как в системе RedHat, так и в Mac OS X.

Проблема в том, что система RedHat использует GNU find версии 4.1.20, в то время как mac find является некоторой версией BSD. В mac find вы используете find -L для перехода по символическим ссылкам. В версии GNU вы используете find -follow . Похоже, что нет никаких общих вариантов для следующих символических ссылок.

Обходной путь для моих машин - изменить find на свою собственную частную версию, но это не приемлемый вариант для распространения кода. Кто-нибудь может порекомендовать альтернативы? Есть ли что-то в руководстве по find я пропустил, рассказывая, как переходить по символическим ссылкам, которое не зависит от версии?

1 ответ1

2

Я просто неправильно использовал find.

Это не удается:

$ find -follow . -name "t*"
find: ollow: No such file or directory

Пока это работает:

$ find . -name "t*" -follow

Я думаю, это потому, что -f - это специальная опция для поиска.

Обратите внимание, что версия find для GNU также не позволяет использовать -follow перед путем, но, по крайней мере, выдает полезную ошибку:

find: paths must precede expression

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