2013-08-20 2 views
30

Ich möchte alle pdf Dateien in einem Ordner finden. Es enthält pdf Dateien innerhalb und mehr Verzeichnisse, die auch mehr enthält. Der Ordner befindet sich auf einem Remote-Server, auf den ich ssh zugreifen kann. Ich benutze das Mac-Terminal, aber ich glaube, der Server, mit dem ich mich verbinde, ist Centos.Wie finde ich Dateien rekursiv nach Dateityp und kopiere sie in ein Verzeichnis, während ich in ssh bin?

Ich muss alle pdfs finden und sie alle in ein Verzeichnis auf dem Remote-Server kopieren. Ich habe ungefähr 10 Varianten ohne Glück versucht. Sowohl meine als auch die Remote-Systeme scheinen nicht -exec als Befehl zu erkennen, obwohl exec in Ordnung ist, also ist das ein Problem.

Ich bin nicht sicher, was das Problem hier ist, aber der Befehl nicht fehlschlägt es nur da sitzt und für immer hält, so dass ich keine nützlichen Fehler zu posten haben.

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 

Dies ist der letzte, den ich versuchte, ich glaube, ich die Erlaubnis Fehler verweigert für nicht sicher über den Rest jetzt im aber ignorieren können.

Antwort

95

Versuchen Sie folgendes:

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

Danke, es saß dort für eine Weile, aber ich denke, das könnte mit den Berechtigungen Fehler zu tun haben. – lorless

+2

Was macht das '\;' als Teil des Exec-Befehls? – user3728501

+0

@ user3728501 es beendet den exec-Ausdruck –

2

So etwas wie dies funktionieren sollte.

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

+1

Was macht das '\;' als Teil des 'exec' Befehls? – user3728501

+0

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

1

Paul Dardeau Antwort ist perfekt, das einzige, was ist, was ist, wenn alle Dateien in diesen Ordnern sind keine PDF-Dateien und Sie wollen es packen kein all die Erweiterung Angelegenheit. Nun einfach ändern Sie es in

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

Nur um zusammenzufassen!