Использование поиска с опцией -L
У меня есть это:
mylink -> myfile
Когда я делаю:
find -L . -name 'mylink'
Я получил:
./mylink
Я не понимаю, почему это так, учитывая это на странице руководства:
-L: Следуйте по символическим ссылкам. Когда find проверяет или печатает информацию о файлах, используемая информация должна быть взята из свойств файла, на который указывает ссылка, а не из самой ссылки (если это не разорванная символическая ссылка или find не может проверить файл). на которую указывает ссылка).
Исходя из вышеизложенного, я ожидал следующее поведение для моего примера: поиск запускает поиск. Это встречает mylink. Поскольку -L действует, он разыменовывает его и получает имя указанного файла 'myfile'. Имя файла не соответствует шаблону mylink, и ничего не сообщается. Что происходит?
2 ответа
Имя не является свойством файла, это свойство каталога, в котором оно находится.
Если вы хотите сопоставить содержимое символической ссылки, используйте -lname
,
"Следование ссылкам" применяется, когда есть ссылка на каталог.
Ссылка на файл - это просто файл, который нужно найти. Без -L
ссылка на каталог - это тоже просто файл.
Только когда -L
добавлен, найдет рекурс в связанный каталог