Использование поиска с опцией -L

У меня есть это:

mylink -> myfile

Когда я делаю:

find -L . -name 'mylink'

Я получил:

./mylink

Я не понимаю, почему это так, учитывая это на странице руководства:

-L: Следуйте по символическим ссылкам. Когда find проверяет или печатает информацию о файлах, используемая информация должна быть взята из свойств файла, на который указывает ссылка, а не из самой ссылки (если это не разорванная символическая ссылка или find не может проверить файл). на которую указывает ссылка).

Исходя из вышеизложенного, я ожидал следующее поведение для моего примера: поиск запускает поиск. Это встречает mylink. Поскольку -L действует, он разыменовывает его и получает имя указанного файла 'myfile'. Имя файла не соответствует шаблону mylink, и ничего не сообщается. Что происходит?

2 ответа

Решение

Имя не является свойством файла, это свойство каталога, в котором оно находится.

Если вы хотите сопоставить содержимое символической ссылки, используйте -lname,

"Следование ссылкам" применяется, когда есть ссылка на каталог.

Ссылка на файл - это просто файл, который нужно найти. Без -L ссылка на каталог - это тоже просто файл.

Только когда -L добавлен, найдет рекурс в связанный каталог

Другие вопросы по тегам