2013-08-20 15 views
30

Chciałbym znaleźć wszystkie pliki pdf w folderze. Zawiera wewnątrz pliki pdf i więcej katalogów, które zawierają również więcej. Folder znajduje się na serwerze zdalnym Mam dostęp ssh do. Używam terminalu mac, ale uważam, że serwer, z którym się łączę, to Centos.Jak znaleźć pliki rekurencyjnie według typu pliku i skopiować je do katalogu w ssh?

Potrzebuję znaleźć wszystkie pliki pdf i skopiować je wszystkie do jednego katalogu na serwerze zdalnym. Próbowałem około 10 odmian bez powodzenia. Zarówno mój, jak i systemy zdalne nie wydają się rozpoznawać -exec jako polecenie, chociaż exec jest w porządku, więc jest to problem.

Nie jestem pewien, na czym polega problem, ale polecenie nie zawiedzie. Po prostu siedzi tam i zatrzymuje się na zawsze, więc nie mam żadnych przydatnych błędów do opublikowania.

cp $(find -name "*.pdf" -type f; exec ./pdfsfolder {} \; | sed 1q) 

find: ./tcs/u25: Permission denied 
find: ./tcs/u68: Permission denied 
-bash: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: is a directory 
-bash: exec: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: cannot execute: Success 
cp: target `./runaways_parents_guide_2013_final.pdf' is not a directory 

To ostatni próbowałem, myślę, że mogę zignorować brak dostępu do błędów, ale teraz nie jestem pewien co do odpoczynku.

Odpowiedz

95

Spróbuj tego:

find . -name "*.pdf" -type f -exec cp {} ./pdfsfolder \; 
+0

Dzięki, usiadłem tam przez chwilę, ale myślę, że mogło to być spowodowane błędami uprawnień. – lorless

+2

Co robi '\;' jako część polecenia exec? – user3728501

+0

@ user3728501 kończy wyrażenie exec –

2

Coś jak to powinno działać.

ssh [email protected] 'find -type f -name "*.pdf" -exec cp {} ./pdfsfolder \;'

+1

Co robi '\;' jako część komendy 'exec'? – user3728501

+0

@ user3728501 http://stackoverflow.com/questions/20913198/why-are-the-backslash-and-semicolon-required- with-find-commands-exec-optio – ptierno

1

Paul Dardeau odpowiedź jest idealny, jedyną rzeczą jest, co zrobić, jeśli wszystkie pliki w tych folderach nie są pliki PDF i chcesz chwycić ją wszyscy bez względu na rozszerzenie. Po prostu zmień go na

find . -name "*.*" -type f -exec cp {} ./pdfsfolder \; 

Podsumowując!

Powiązane problemy