3 votes

Commande système awk avec des espaces dans les paramètres

J'essaie d'exécuter la commande suivante pour extraire le texte de tous les PDF

find *.pdf | awk '{system("pdftotext "$0)}'

Mais bon sang, un fou a mis des espaces dans les noms de fichiers, comment faire pour que cela se passe bien ?

2voto

ghoti Points 14996

Quel est le rôle de awk dans ce domaine ? Peut-être devriez-vous laisser find d'exécuter lui-même les choses.

find . -name \*.pdf -exec /path/to/pdftotext {} \;

Ou si vous êtes vraiment coincé à supposer que les noms de fichiers seront sûrs comme stdout à trouver (ce que vous avez prouvé qu'ils ne sont pas simplement en posant cette question), alors mettez les noms de fichiers entre guillemets. Cela fonctionnera :

find . -name \*.pdf -print | awk '{cmd=sprintf("pdftotext \"%s\"", $0);system(cmd);}'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X