Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [minix] - copia di file

    stavo facendo delle prove coi comandi find e cp ed il mio obbiettivo era trovare un certo tipo di file e copiarlo un un'altra directory ricostruendone però i percorsi originali in un'altra sottodirectory.
    Problema: i file vengono trovati e copiati ma le directory di appartenenza originarie on vengonon create

    esempio:
    cp -pr $(find / -type f -name "z*") /miadirectory

    il risultato che si ottiene è la copia di tutti i file che iniziano per z nella directory miadirectory, ma le sottocartelle originarie non vengonon create.


    grazie 10000

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    aggiungi l'opzione "--parents" di cp.

    man cp

    ciao
    slack? smack!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da cacao74
    aggiungi l'opzione "--parents" di cp.

    man cp

    ciao
    purtroppo non esiste quella opzione in minix

  4. #4

  5. #5
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    errore mio...
    slack? smack!

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da cacao74
    errore mio...
    in questo modo non mi crea le sottodir e genere il messaggio:
    cp can't copy /miadirectory/modem.c onto itself

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da sacarde
    rsync ?
    come lo si usa in accoppiata col find ?

  8. #8
    in linux in linea generale:

    rsync -av /dir-partenza /dir-arrivo


    per selezionare:

    --exclude=PATTERN exclude files matching PATTERN
    --exclude-from=FILE read exclude patterns from FILE
    --include=PATTERN don't exclude files matching PATTERN



    http://linux.die.net/man/1/rsync

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    grazie per le risposte ma credo di aver trovato un metodo quasi semplice

    1) find / -type f -name "z*" > temp
    2) while read l; do mkdir -p /miadirectory/$l; done < temp
    3) while read l; do cp -pr $l /miadirectory/$l; done < temp

    problema:
    nel punto 2 se riuscissi ad escludere il nome del file sare a posto in quanto mi verrebbe ricostruita l'intera struttura dei file inizianti per z nella cartella miadirectory.

    Un altra ipotesi che avevo rpeso in considerazione era di usare il comando tar:

    find / -type f -name "z*" | xargs tar -cvf archivio.tar

    e scompattare tale archivio in miadirectory ovviamente dopo averla creata ma ahimè non funziona.
    Ho spostato l'archivio tar in home, mi sono posizionato nella miadyrectory e poi ho provato a scrivere:

    tar -xvf /archivio.tar con la speranza che la struttura delle directory venisse ricostruita sotto miayrectory ma on è così.

    Il metodo sopra coi 3 passaggi però è quello che preferisco sempre che si riesca a risolvere il problema del nome file.

    grazie

  10. #10
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    ah.....
    se quindi il problema non e' usare solo find ma "puoi" fare uno script, la cosa e' semplicissima (con rsync e' ovviamente ancora piu' immediata).

    usa "dirname" per recuperare il path della directory che contiene il file trovato con find, quindi "mkdir -p" per creare la directory e concludi con un "cp".

    servire freddo.

    ciao
    slack? smack!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.