я имею
link -> file
я делаю
find -L . -name 'link'
И получить
./link
Почему это?
человек находит говорит:
-L: Следуйте по символическим ссылкам. Когда find проверяет или печатает информацию о файлах, используемая информация должна быть взята из свойств файла, на который указывает ссылка, а не из самой ссылки (если только она не является символической ссылкой или find не может проверить файл). на который указывает ссылка).
Общее правило состоит в том, что если команда работает со ссылками (то есть записями каталога, которые являются указателями на inode), то команда обрабатывает символические ссылки как сами по себе, а не как объект, на который указывает ссылка. В противном случае команда действует на то, на что указывает символическая ссылка. Таким
cp
образом, по умолчанию следует символические ссылки и копируется содержимое файла, на который указывает ссылка. Но когда вы проситеcp
разобраться с записями каталога, указав-R
, он перестает следовать символическим ссылкам.mv
всегда работает с записями каталога, и поэтому никогда не следует символическим ссылкам.В
find
нормальной деятельности командования должны работать на записи каталога, так символьные ссылки не следует по умолчанию. Добавление-L
заставляетfind
следовать символическим ссылкам для всех свойств, кроме того, которое нельзя игнорировать при выполнении поиска в каталоге, имени. Одной из целейfind -name
является предоставление ввода для таких команд, какmv
иrm
, которые работают с записями каталога. Были бы неприятные и удивительные результаты, еслиfind -L dir -name
бы можно было получить имена, которые указывали бы вне дерева каталогов с корнемdir
.источник
There would be unpleasant and surprising results if
находит, что -L dir -name` может создавать имена, которые указываются вне дерева каталогов с корнем в dir. => Не должно ли это быть: это будет неприятно ... еслиfind dir -name pattern
...? потому что добавление -L позволяет указывать на внешнююcp -R
скопировать материал по символической ссылке?