Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [linux] FIND

  1. #1

    [linux] FIND

    Ho bisogno di una riga di codice da inserire in uno script linux che mi scandisca la mia home e le relative sottodirectory e mi restituisca una lista dei fai non modificati da piu' di una settimana. Detto cosi sembra una cosa difficile ma immagino sia na cosa semplicissima perchè il comando find mi permette di scandire la mia home e le sottodirectory e aiutarmi nella directory con un test solo che non so come fare una cosa del tipo
    FIND ( directorydi partenza,TESTdataattuale-1settimana < datafile)
    spero in un vostro aiutino

    salve

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    sergio@tweety:~$ find ./ -daystart -mtime +7 [-fls list.txt]

    vedi se ti piace

    la parte tra le parentesi quadre, ti permette di salvare su file un output esteso (sullo stile di ls -l)

    man find

    ciao
    slack? smack!

  3. #3

    grazieee

    grazie era proprio quello che volevo però ora mi sorge un nuovo problema come faccio a mettere la lista dei file che mi restituisce find in un'operazione come cp??
    In pratica io devo fare
    cp [lista dei file del find] [una directory]

    e poi mi spieghi in due parole queto test -daystart -mtime +7 che hai usato nel comando find???

    ciao grazie spero in una tua risposta ciaoooo

  4. #4
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    find <dir_origine> -daystart -mtime +7 | xargs -i cp '{}' <dir_destinazione>

    -daystart: il conteggio delle 24 ore parte dall'inizio della giornata (00:00) e non dall'ora in cui il comando viene eseguito

    -mtime +7: si prendono in considerazione i file modificati più di 7 giorni (7*24 ore) fa

    xargs: prende un elenco da STDIN e lo passa come argomento al comando successivo.

    -i: per specificare la posizione dell'elenco sulla riga di comando

    '{}': l'elenco in questione (concettualmente simile a -exec '{}' di find)

    man find
    man xargs

    ciao
    slack? smack!

  5. #5

    ancora grazieee

    ok la tua riga di codice fa quello che volevo ma ho trovato un intoppo se ad esempio in/andrea/pippo c'e' un file di nome prova e in andrea/pippo/bah c'e' un'altro file di nome prova il secondo sovrascrive il primo.

    Visto che sei pratico della materia sai mika come funziona il comando TAR vorrei impacchettare i file modificati da piu di una settimana in un bel file.tar.gz e copiarli sempre nell'altra directory

    ciaooo

  6. #6
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    beh, sei un perito informatico, ti ho indicato due esempi,
    dovresti essere in grado di camminare con le tue gambe.

    leggiti le pagine di manuale di
    cp (si parla anche di backup)
    tar (utilità per archiviare file)

    ciao
    slack? smack!

  7. #7

    nooooooooooo

    non puoi farmi questo
    Sono ad un vicolo ceco non capisco come mai questa cosa non funziona
    find ./ -daystart -mtime +7 |xargs -i tar -cvvf pippo.tar.gz '{}' |xargs -i cp '{}' $1 -i

    Ma non fa quello che mi aspetto fose non ho capito come funziona xargs

    PS: cmq sarò un perito informatico ma ho fatto conoscenza con linux e la sua bash 3 giorni fa quindi penso siano domande un po tonte dovute alla poca conoscenza dei comandi e della sintassi. Scusa se a te sembra che ti sto chiedendo cose banali

    ciaooooo

  8. #8
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Il mio tono del post precedente voleva essere scherzoso, ma avendo dimenticato delle faccine...

    ecco qua:

    find $DIR_ORIGINE -mindepth 1 -daystart -mtime +10 | xargs --max-lines=500 tar cf $DIR_DESTINAZIONE/backup-$(date +%Y-%m-%d).tar

    Questa riga di comando effettua questi tre compiti:
    1. ricerca con find i file più vecchi di 10 giorni all'interno della directory $DIR_ORIGINE e lo manda in 'pipe' al comando successivo.
    2. xargs, acquisisce sullo 'standard_input' i dati ricevuti dalla 'pipe' del comando precedente ed accumula i dati fin ad un massimo di 500 righe (--max-lines)
    3. per finire tar riceve come argomento l'elenco dei file fornito da xargs creando un archivio di backup con la data corrente come nome.

    nota: se i files fossero più di 500, il comando terminerebbe con un errore, percio' metti il valore che ritieni più opportuno.

    Altra considerazione che si può fare è che non si è per nulla obbligati a risolvere il quesito con una sola riga di comando, potrebbe essere più semplice e comodo crearsi un piccol scriptino ad hoc.

    Studia e buon lavoro.

    ciao
    slack? smack!

  9. #9

    grazie

    ho risolto i due problemi con queste due righe:
    find <dir_sorg> -mtime +7 -exec cp {} <dir-dest> \;
    find <dir_sorg> -mtime +7 -exec tar -rf nome.tar {} \;
    insomma in pratica non mi piaceva il tuo xargs
    Cmq mi sei stato veramente di aiuto thx
    Per finire ti posso chiedere un'ultima cosina come si fa a trovare la home di un user mi serverebbe una varibile che mi ritorna l'eser dell'utente che ha effettuato l'accesso in modo da poter scrivere:
    /home/<variabile>

    thx

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.