знайти використання з -L


34

Я маю

link -> file

я згоден

find -L . -name 'link'

І діставай

./link

Чому так?

людина знайде каже:

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

Відповіді:


12

З -L, він вивчає властивості файлу - вмісту або метаданих, а не властивостей посилання. Наприклад, якщо ви використовуєте -atime, він перевірятиме atimeфайл, а не посилання:

$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$

testdir/linkстворено після testdir/ref, але файл, на який він вказує, не був.


1
Чи можете ви пояснити, взявши мій приклад? Що я розумію, це так: у моєму прикладі пошук починає свій пошук. Він стикається з ./link, оскільки -L фактично знищує його і приймає властивості ./file. Він порівнює ім’я ./file із шаблоном 'link', і оскільки він не відповідає, не повинен повідомляти про жодний o / p. Що не так у моїх міркуваннях?
Ankur Agarwal

З цитуваного посібника з пошуку, "використана інформація береться з властивостей файлу, на який вказується посилання". Ім'я файлу не є однією з його властивостей, тому він все ще використовує ім'я посилання. Це також набагато корисніше, ніж ім'я справжнього файлу.
Кевін

"Ім'я файлу не є однією з його властивостей". Я цього не знав. Будь-які інші атрибути файлів, які не вважаються властивостями? Якщо чесно, я все ще скептично налаштований і чекаю, що скажуть інші.
Ankur Agarwal

Як і @abc, не знав, що ім'я файлу не є властивістю файлу. Де я можу знайти цю інформацію в будь-якій документації та / або довідкових сторінках? Будь ласка, зверніться до де я можу дізнатися більше про властивості файлу.
жартівник

34

Загальне правило полягає в тому, що якщо команда працює на посиланнях (тобто записах каталогів, які є вказівниками на індекси), тоді команда розглядає символічні посилання як самі, а не як об'єкт, на який вказує посилання. Інакше команда працює над тим, на що вказує символьне посилання. Таким чином, cpнаступні символьні посилання за замовчуванням і копіюють вміст файлу, на який вказує посилання. Але коли ви попросите cpрозібратися з записами каталогів, вказавши -R, він припиняє слідувати посиланнями. mvзавжди працює з записами каталогів, і тому вона ніколи не слідує за посиланнями.

У findнормальної діяльності командування повинні працювати на записи каталогу, так символьні посилання не слід за замовчуванням. Додавання -Lпричин findдля слідування символьних посилань для всіх властивостей, за винятком того, яке не можна ігнорувати під час пошуку в каталозі, імені. Однією з цілей find -nameє надання вводу для команд типу « mvта» rm, які працюють над записами каталогу. Були б неприємні та дивовижні результати, якби find -L dir -nameможна створити імена, які вказували поза деревом каталогів, корінням на dir.


ОЦЕ ТАК! Чому ця тонка концепція недостатньо проілюстрована на сторінках чоловіка (якщо я її не пропустив)? Це для мене великий сюрприз.
Анкур Агарвал

2
@Kyle Jones There would be unpleasant and surprising results if знайде -L dir -name` може створити імена, які вказували поза деревом каталогів, корінням у dir.` => не повинно це бути: було б неприємно ... якби find dir -name pattern...? тому що додавання -L дозволяє вказувати на зовнішній dir
timotheecour

Тож як домогтися cp -Rкопіювання матеріалів під символьне посилання?
javadba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.