znajdź wiele plików i skopiuj prawdziwe pliki z dowiązania symbolicznego

0

Czytałem to pytanie, ale nie ma na nie odpowiedzi, a moja jest inna.

Linux: próba znalezienia plików z listy rekurencyjnie i skopiowania ich gdzie indziej

Próbuję znaleźć prawdziwe pliki z dowiązań symbolicznych tych plików!

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

W przypadku tego pytania próbowałem tak krótszego przykładu:

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

Folder pusty.

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

Pliki do skopiowania

$ 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

Komenda!

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

Wynik!

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

Tylko wykonuje kopię dla ostatniego znalezionego pliku !!!

Jak to zrobić

Chepe Lucho
źródło
Możliwy duplikat dziwnego zachowania „znajdź” w
systemie
@KamilMaciorowski To zły tytuł do pytania, jak muszę szukać mojego pytania? „dzieje się coś dziwnego”? Pytanie musi być bardziej opisowe na temat celu, porażek i wyników, a drugi post tego nie ma.
chepe lucho
O co ci chodzi? Trudno jest nazwać problem, chyba że już wiesz, na czym on polega. Zauważ, że twój obecny tytuł też nie jest doskonały, dowiązania symboliczne są tutaj zupełnie nieistotne. Możesz poprawić dowolny tytuł. Twoje podejście wydaje się nieco defensywne, ale moim zamiarem było pomóc tobie i przyszłym użytkownikom w uzyskaniu dobrych odpowiedzi i zrozumieniu tematu. Gdybym myślał, że nie zbadałeś wystarczająco dużo, głosowałbym za twoim pytaniem.
Kamil Maciorowski
Nie mogę zmienić tytułu innej osoby, dla mnie ta akcja jest inwazyjna, być może poinformuję właściciela o zmianie pytania. Chodzi o to, jak znaleźć coś podobnego w innym poście, który nie ma pojęcia? (W prawdziwym świecie) nie idź znaleźć książkę do gotowania w sklepie samochodowym.
chepe lucho
Nie możesz porównać umiejętności do znalezienia czegoś, gdzie masz 11 000, gdy mam tylko 120. Ta strona jest dla ekspertów i początkujących (tak myślę) ... Jestem (réndome) uśmiecham się z tych komentarzy.
chepe lucho

Odpowiedzi:

2

man find na moim Kubuntu stwierdza:

Należy pamiętać, że -ajeśli zostanie to określone pośrednio (na przykład przez dwa testy występujące bez wyraźnego operatora między nimi) lub wyraźnie ma wyższy priorytet niż -o. Oznacza to, że find . -name afile -o -name bfile -printnigdy nie zostanie wydrukowany afile.

Potrzebujesz (ocalonych) nawiasów:

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