Crea collegamenti simbolici per più libri raccolti dal comando 'trova'

1

Mi piacerebbe creare collegamenti simbolici per più libri cercati eseguendo il comando find .

In primo luogo, raccolgo tutti i libri JS

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

Restituisce 35 libri

../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
..

Inoltre per copiarli nella directory js_books

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

Funziona, tuttavia, più copie consumano molto spazio sul disco.
Quindi cancello i libri e cerco di creare un collegamento simbolico all'interno.

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

Non restituisce nulla in dir js_books.

Come risolvere questo problema?

    
posta JawSaw 29.03.2018 - 15:07
fonte

2 risposte

1

Puoi perdere% primari% co_de e virgolette forti intorno a -print0 . Ti suggerisco di usare un modello glob anziché una regex. Qualcosa come:

 find ~ -type f -iname '*javascript*.pdf' -exec ln -s {} js_books \;
    
risposta data 29.03.2018 - 15:50
fonte
0

Prova a eseguire il comando dopo aver rimosso l'ultima occorrenza di '{}' dalla riga di comando che hai inserito:

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

Questo dovrebbe farlo funzionare.

    
risposta data 29.03.2018 - 15:31
fonte

Leggi altre domande sui tag