comando Unix per copiare ricorsivamente i file JPG in un albero di directory complesso

2

Ho una struttura ad albero di directory di grandi dimensioni che contiene più file JPG in ogni directory root e le loro successive sottodirectory. Ho bisogno di estrarre ricorsivamente un singolo file JPG da ogni directory root e copiarli tutti in un'altra posizione mantenendo la stessa struttura ad albero e ignorando gli altri file. I nomi dei file JPG che ho bisogno di estrarre tutti sono contrassegnati con "RNav.jpg". Ho fatto esperimenti con il comando cp e la wild card, ma non ho potuto farlo funzionare. Sto gestendo Mavericks e sono un novizio quando si tratta di righe di comando UNIX.

La struttura esistente è la seguente: (fino a 500 directory)

  • VNAME / PNAME1 / PNAME1_RNav.jpg
  • VNAME / PNAME2 / PNAME2_RNav.jpg
  • VNAME / PNAME3 / PNAME3_RNav.jpg
  • VNAME / PNAME4 / PNAME4_RNav.jpg
posta user64184 06.12.2013 - 01:36
fonte

2 risposte

1

Puoi anche usare rsync -R ( --relative ) o --parents in GNU cp:

rsync -R */*/*.RNav.jpg /path/to/target
gcp --parents */*/*RNav.jpg /path/to/target
find . -name \*RNav.jpg -exec rsync -R {} /path/to/target \;
find . -name \*RNav.jpg -exec gcp --parents {} /path/to/target \;
    
risposta data 06.12.2013 - 12:01
fonte
3

Puoi facilmente usare rsync per realizzare questo:

rsync --include "*/" --include "*RNav.jpg" --exclude "*" -am source destination

Basato su questa pagina . Questo include cartelle e file * RNav.jpg e quindi esclude tutto il resto. Ho usato -a anziché -r per conservare più informazioni (la mia preferenza personale) e ho aggiunto -m per impedire a rsync di creare parti dell'albero della directory che non contenessero alcun file.

    
risposta data 06.12.2013 - 01:52
fonte

Leggi altre domande sui tag