2 votes

Créer des liens symboliques pour plusieurs livres collectés à partir de la commande `find`.

J'aimerais créer des liens symboliques pour de multiples livres recherchés à partir de la course find commandement.

Premièrement, je collectionne tous les livres de JS.

find ~ -type f -iregex  '.*javascript.*\.pdf' > js_books.md 2>/dev/null

Il retourne 35 livres

../Coding/Books/HTML_Collections/Freeman E.T., Robson E. - Head First HTML5. Programming Building Web Apps with JavaScript - 2011.pdf
../Coding/Books/HTML_Collections/Learning Web Design - A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics - Jennifer Niederst Robbins - 4th Edition - August 2012.pdf
..

En outre, pour les copier dans le répertoire js_books

mkdir js_books
find ~ -type f -iregex  '.*javascript.*\.pdf' -print0 -exec cp '{}' js_books

Cela fonctionne, mais les copies multiples consomment beaucoup d'espace disque.
Je supprime donc les livres et j'essaie de créer un lien symbolique à l'intérieur.

find ~ -type f -iregex  '.*javascript.*\.pdf' -print0 -exec ln -s '{}' js_books/'{}' \;

Il ne retourne rien dans le répertoire js_books.

Comment résoudre un tel problème ?

2voto

Michael Zhou Points 167

Vous pouvez perdre le -print0 primaire et les guillemets forts autour de {} . Je vous suggère d'utiliser un motif global au lieu d'une regex. Quelque chose comme :

 find ~ -type f -iname '*javascript*.pdf' -exec ln -s {} js_books \;

1voto

Nimesh Neema Points 44385

Essayez d'exécuter la commande après avoir supprimé la dernière occurrence de '{}' à partir de la ligne de commande que vous avez saisie :

find ~ -type f -iregex '.*javascript.*\.pdf' -print0 -exec ln -s '{}' js_books/ \;

Cela devrait le faire fonctionner.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X