encuentra varios archivos y copia archivos reales desde el enlace simbólico

0

Estaba leyendo esta pregunta pero no responde, y la mía es diferente.

Linux: intentar buscar archivos de una lista de forma recursiva y copiarlos en otro lugar

Estoy tratando de encontrar los archivos reales de enlaces simbólicos de estos archivos !.

$ 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"

Para esta pregunta estaba tratando de ejemplo más corto:

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

La carpeta vacía.

$ 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 ..

Los archivos a copiar.

$ 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

¡El comando!

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

¡El resultado!

$ 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
$ 

¡¡¡Solo está ejecutando la copia del último archivo encontrado !!!

Como hacer eso

chepe lucho
fuente
Posible duplicado de Extraño comportamiento de "encontrar" en linux
Kamil Maciorowski
@KamilMaciorowski Es un mal título para una pregunta, ¿cómo debo buscar mi pregunta? 'Algo extraño está pasando'? La pregunta debe ser más descriptiva sobre el objetivo, las fallas y los resultados, y la otra publicación no los tiene.
chepe lucho
¿Cual es tu punto? Es difícil nombrar el problema a menos que ya sepa cuál es el problema. Tenga en cuenta que su título actual tampoco es perfecto, los enlaces simbólicos son completamente irrelevantes aquí. Siéntete libre de mejorar cualquier título. Su actitud parece algo defensiva, pero mi intención era ayudarlo a usted y a los futuros usuarios a encontrar buenas respuestas y comprender el tema. Si pensara que no has investigado lo suficiente, habría rechazado tu pregunta.
Kamil Maciorowski
No puedo cambiar el título de otra persona, para mí esta acción es invasiva, tal vez informe la pregunta al propietario de la publicación. El punto es, ¿cómo encontrar algo relacionado en otra publicación que no tenga idea? (En el mundo real) no vas a buscar un libro para cocinar en una tienda de autos.
chepe lucho
No puedes comparar las habilidades para encontrar algo en el que tengas 11K cuando solo tengo 120. Este sitio es para gente experta y novato (supongo que) ... Estoy (riéndome) sonriendo sobre estos comentarios.
chepe lucho

Respuestas:

2

man find en mis estados de Kubuntu:

Tenga en cuenta que -a cuando se especifica implícitamente (por ejemplo, por dos pruebas que aparecen sin un operador explícito entre ellas) o explícitamente tiene mayor prioridad que -o. Esto significa que find . -name afile -o -name bfile -print nunca se imprimirá afile.

Necesita (escapado) paréntesis:

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