web-dev-qa-db-fra.com

Comment trouver des fichiers récursivement par type de fichier et les copier dans un répertoire en ssh?

Je voudrais trouver tous les fichiers pdf dans un dossier. Il contient des fichiers pdf à l'intérieur ainsi que plusieurs répertoires contenant davantage. Le dossier est situé sur un serveur distant auquel j'ai accès ssh. J'utilise le terminal mac mais je crois que le serveur auquel je me connecte est Centos.

J'ai besoin de trouver tous les fichiers PDF et de les copier tous dans un répertoire sur le serveur distant. J'ai essayé environ 10 variations sans succès. Le mien et les systèmes distants ne semblent pas reconnaître -exec en tant que commande, bien que exec soit correct, c'est donc un problème.

Je ne suis pas sûr du problème, mais la commande n'échoue pas, elle reste bloquée là pour toujours et je n'ai donc aucune erreur utile à signaler.

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

C’est le dernier que j’ai essayé, je pense pouvoir ignorer les erreurs d’autorisation refusée pour l’instant, mais je ne suis pas sûr du reste.

44
lorless

Essaye ça:

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

La réponse de Paul Dardeau est parfaite, la seule chose à faire est de savoir si tous les fichiers contenus dans ces dossiers ne sont pas des fichiers PDF et que vous voulez tout saisir, peu importe l'extension. Eh bien, remplacez-le par

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

Juste pour résumer!

4
gadget

Quelque chose comme ça devrait marcher.

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

4
ptierno