Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    bash per ordinare dei file

    Volevo creare un file bash (anche se lo conosco poco) per ordinare i file di una direcotory. I file in questa dir hanno all'inizio un tag di riconoscimente ([GIOCO] [FILM] [DOC] ..) e volevo far si che tutti i file con un certo tag venissero messi in una determinata directory.
    1) pensavo di far un for su tt i file della cartella
    2) poi controllare il tag NON SO COME SI FA
    3) spostarlo nella direcotory giusta SO FARLO A META', CREDO
    4) rinnominarlo togliendo il tag NON SO COME SI FA


    qualcuno sa darmi una mano?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    files=`find \[STRINGACERCATA\]*`
    nuovonome = `echo $i | cut -c 3-`
    for i in files; do mv $i /nuova/directory/$nuovonome; done
    files diventa un array contenitore dei nomifiles che contengono STRINGACERCATA.

    nuovonome viene troncato dei primi 3 caratteri (presumendo che siano 3 i caratteri del tag, altrimenti modifichi).

    Il ciclo scorre l'array, e sposta dalla posizione in cui ti trovi il file nella nuova directory con il nuovonome.


  3. #3
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da gianiaz
    codice:
    files=`find \[STRINGACERCATA\]*`
    nuovonome = `echo $i | cut -c 3-`
    for i in files; do mv $i /nuova/directory/$nuovonome; done
    files diventa un array contenitore dei nomifiles che contengono STRINGACERCATA.

    nuovonome viene troncato dei primi 3 caratteri (presumendo che siano 3 i caratteri del tag, altrimenti modifichi).

    Il ciclo scorre l'array, e sposta dalla posizione in cui ti trovi il file nella nuova directory con il nuovonome.

    ottimo ora c smanetto..

  4. #4
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Ho sistemato lo script perchè dava alcuni problemi, ora vorrei migliorarlo.. cmq questo è lo script di adesso
    codice:
    #!/bin/bash
    # bash per sistemare il sistema
    cd ~/prova/; 
    files=`find \[GIO\]*`
    for i in $files; do 
    nuovonome=`echo $i | cut -c 6-`
    mv $i /home/bako/prova/GIO/$nuovonome;
    done
    io vorrei fare una lista con tutti i tag [GIO] [MP3] ecc e la rispettiva cartella dove deve essere messo. così da fare un unica procedura che valga per tutto l'elenco.
    solo che nn so come fare. pensavo con un array di struct o con due array, solo che nn so se si può fare con il bash..

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    se sai che i files contenuti nella dir hanno tutti la stessa forma potresti fare una cosa:

    chiamare la dir con il nome del primo tag, e la subdir con la nome del secondo tag.

    poi fai un ciclo nei file di tutta la dir di origine e per ogni file manipoli il nome estrapolando dal 2 al 4 carattere per la dir del propietario, e dal 7 al 9 per la sottodir del tipo di file.
    codice:
    [XXX][XXX]Nomefile
    123456789
    dir=`echo $i | cut -c 2-4`
    subdir=`echo $i | cut -c 7-9`
    nuovonome=`echo $i | cut -c 6-`
    mv $i /$dir/$subdir/$nuovonome

  6. #6
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    mitticccco .. domani provo a vedere se va..
    grazie

  7. #7
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    devo ancora provare ma mi sa che va bene.. cmq mi servono ancora delle dritte..
    1) è possibile contare i file e poi ricavarne l'indice? mi spiego meglio, ho 30 file [MP3] e quando li muovo vorrei che dicesse 1/30 2/30 3/30 ecc è possibile?
    2) come faccio a passare un parametro al bash? es ./ordina nomecartella, come lo recupero nel bash?

  8. #8
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da gianiaz
    codice:
    [XXX][XXX]Nomefile
    123456789
    dir=`echo $i | cut -c 2-4`
    subdir=`echo $i | cut -c 7-9`
    nuovonome=`echo $i | cut -c 6-`
    mv $i /$dir/$subdir/$nuovonome
    mi da dei problemi
    se ho il file
    [ABC]prova
    mi crea una cartella bc e poi mi da errore..

  9. #9
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    c'è un problemino se il file contiene spazi me lo prende come file diversi
    es
    Ciao mamma.txt
    trova 2 file ciao e mamma.txt
    allora modifico tutti i file così ciao_mamma.txt
    ora mi servirebbe che il bash prenda tutti i _ e li converta in spazi .. se po fa?

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    echo "prova di file" | tr '\ ' '_'

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 © 2026 vBulletin Solutions, Inc. All rights reserved.