найти несколько файлов и скопировать реальные файлы из символической ссылки

264
chepe lucho

Я читал этот вопрос, но он не имеет ответа, а мой другой.

Linux: попытка рекурсивно найти файлы из списка и скопировать их в другое место

Я пытаюсь найти реальные файлы по символическим ссылкам этих файлов!

$ sudo find /usr/lib64 -iname "libSM.so" -o -iname "libX11.so" -o -iname "libXinerama.so" -o -iname "libXxf86vm.so" -o -iname "libatk-1.0.so" -o -iname "libc.so.6" -o -iname "libcairo.so" -o -iname "libdl.so" -o -iname "libgcc_s.so.1" -o -iname "libgdk-x11-2.0.so.0" -o -iname "libgdk_pixbuf-2.0.so" -o -iname "libglib-2.0.so" -o -iname "libgmodule-2.0.so" -o -iname "libgobject-2.0.so" -o -iname "libgthread-2.0.so" -o -iname "libgtk-x11-2.0.so.0" -o -iname "libjpeg.so" -o -iname "libm.so" -o -iname "libpango-1.0.so" -o -iname "libpangocairo-1.0.so" -o -iname "libpng.so" -o -iname "libpthread.so.0 " -o -iname "librt.so" -o -iname "libstdc++.so.6" -o -iname "libtiff.so.[3,5]" -o -iname "libz.so" 

Для этого вопроса я пробовал такой короткий пример:

$ sudo find -L /usr/lib64 -iname "libSM.so" -o -iname "libz.so"  -o -iname "libtiff.so.[3,5]" -exec cp {} /usr/copy \; 

Папка пустая.

$ ls -al /usr/copy/ total 0 drwxr-xr-x. 2 root root 6 Feb 15 22:39 . drwxr-xr-x. 14 root root 167 Feb 15 21:33 .. 

Файлы для копирования

$ sudo find /usr/lib64 -iname "libSM.so" -o -iname "libz.so" -o -iname "libtiff.so.[3,5]" /usr/lib64/libz.so /usr/lib64/libSM.so /usr/lib64/libtiff.so.5 /usr/lib64/libtiff.so.3 

Команда!

$ sudo find /usr/lib64 -iname "libSM.so" -o -iname "libz.so" -o -iname "libtiff.so.[3,5]" -exec cp -L {} /usr/copy \; 

Результат!

$ ls -al /usr/copy/ total 884 drwxr-xr-x. 2 root root 46 Feb 15 22:39 . drwxr-xr-x. 14 root root 167 Feb 15 21:33 .. -rwxr-xr-x. 1 root root 419456 Feb 15 22:39 libtiff.so.3 -rwxr-xr-x. 1 root root 479440 Feb 15 22:39 libtiff.so.5 $  

Только он выполняет копию последнего найденного файла !!!

Как это сделать?

0
Возможный дубликат [странного поведения «найти» в Linux] (https://superuser.com/questions/966227/strange-find-behavior-in-linux) Kamil Maciorowski 6 лет назад 0
@KamilMaciorowski Это плохое название для вопроса, как мне нужно искать мой вопрос? «что-то странное происходит»? Вопрос должен быть более описательным в отношении цели, неудач и результатов, а в другом посте их нет. chepe lucho 6 лет назад 0
В чем ваша точка зрения? Трудно назвать проблему, если вы уже не знаете, в чем проблема. Обратите внимание, что ваш текущий заголовок тоже не идеален, символические ссылки здесь совершенно неактуальны. ** Не стесняйтесь улучшать любой заголовок. ** Ваше отношение кажется несколько защитным, но я намеревался помочь вам и будущим пользователям найти хорошие ответы и понять предмет. Если бы я думал, что вы недостаточно исследовали, я бы отклонил ваш вопрос. Kamil Maciorowski 6 лет назад 0
Я не могу изменить название другого человека, для меня это действие является агрессивным, возможно, сообщите об изменении вопроса владельцу поста. Дело в том, как найти что-то связанное в другом посте, который не имеет понятия? (В реальном мире) вы не идете, чтобы найти книгу для приготовления пищи в автомагазине. chepe lucho 6 лет назад 0
Вы не можете сравнить навыки, чтобы найти что-то, где у вас есть 11K, когда у меня всего 120. Этот сайт предназначен для опытных людей и новичков (я полагаю, что) ... Я (riéndome) улыбаюсь из-за этих комментариев. chepe lucho 6 лет назад 0
Даже анонимные пользователи могут предложить редактировать сообщение. Редактирование будет рассмотрено пользователями с достаточной репутацией, оно будет принято или отклонено. Если вы предложите действительно лучший заголовок, а ваше резюме редактирования будет «более описательный заголовок, который теперь легче найти», то, вероятно, оно будет принято сообществом. Но, во-первых, вы можете изменить заголовок вашего вопроса (даже не просматривая его, потому что он принадлежит вам) на что-то вроде «Почему команда` find` пропускает ожидаемые результаты при использовании `-o`?". Любой, кто найдет ваш вопрос, может перейти по моей ссылке, поэтому другой заголовок не имеет значения. Kamil Maciorowski 6 лет назад 0
Вы, кажется, относитесь к этому лично, но я не сравниваю наши навыки. Указание на дубликат не обязательно означает, что вы провалили свое исследование. Это означает, что «ответ уже есть». Искать другой вопрос тоже было нелегко. Я попытался, потерпел неудачу, написал свой ответ, у меня появилось это ноющее чувство, другой вопрос есть, я искал больше. Если бы я нашел его с первой попытки, я бы не стал писать свой ответ. Kamil Maciorowski 6 лет назад 0
Я узнаю о суперпользователе здесь ... Спасибо. @KamilMaciorowski chepe lucho 6 лет назад 0
Я только что отредактировал название другого вопроса. Это должно помочь будущим пользователям. Спасибо за ваш вклад. Kamil Maciorowski 6 лет назад 0

1 ответ на вопрос

2
Kamil Maciorowski

man find на моем Kubuntu говорится:

Пожалуйста, обратите внимание, что -aпри указании неявно (например, двумя тестами, появляющимися без явного оператора между ними) или явно имеет более высокий приоритет, чем -o. Это означает, что find . -name afile -o -name bfile -printникогда не будет печатать afile.

Вам нужны (избежавшие) скобки:

sudo find /usr/lib64 \( -iname "libSM.so" -o -iname "libz.so" -o -iname "libtiff.so.[3,5]" \) -exec cp -L {} /usr/copy \; 

Похожие вопросы