Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Script per rinominare (e "ottimizzare") file

    SAlve.
    Devo "ottimizzare" i nomi di molti file, divisi in diverse cartelle, per renderli "decenti" per la pubblicazione su internet.
    In particolar modo devo:
    - eliminare gli spazi, e sostituirli con l'underscore
    - eliminare i caratteri "strani" (apici, doppi apici, lettere accentate), insomma tutto ciò che possa dare fastidio al browser.

    Mi sapete indicare uno script già pronto da utilizzare?
    Non capisco un'acca di scripting...

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  2. #2
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    Approfitto di questo thread per fare una domanda simile:

    come faccio a rinominare una serie di file con nomi diversi in questo modo:

    file01.jpg
    file02.jpg
    ecc.

    ?
    Esiste qualche programmino che fa questo?
    E' possibile fare uno script che usi awk ( VVoVe: ) ?
    I've got a bike. You can ride it if you like.

  3. #3
    Originariamente inviato da edriv
    Approfitto di questo thread per fare una domanda simile:

    come faccio a rinominare una serie di file con nomi diversi in questo modo:

    file01.jpg
    file02.jpg
    ecc.

    ?
    Esiste qualche programmino che fa questo?
    E' possibile fare uno script che usi awk ( VVoVe: ) ?
    codice:
    # Mi sposto nella directory che mi interessa
    cd /path/che/interessa
    
    # Inizializzo il contatore
    I=1
    
    # "Per ogni FILE in quelli qui presenti, fai"
    for FILE in *; do
        "Rinomina FILE in fileX.jpg"
        mv "$FILE" "file$I.jpg"
        "Incrementa di uno il contatore"
        I=$(expr $I + 1)
    done
    Scritto adesso, non testato, non so se funziona

    Ah, chiaramente tutti i file devono essere dello stesso tipo. Se sono di tipi diversi bisogna lavorare un po' sul nuovo nome.

    Inoltre se i file non devono chiamarsi semplicemente file1.jpg file2.jpg ... file100.jpg ma file001.jpg ... file010.jpg ... file100.jpg bisogna anche qui lavorare un po' per fargli aggiungere gli zeri mancanti.

  4. #4
    Utente di HTML.it L'avatar di Rommel
    Registrato dal
    Jun 2004
    Messaggi
    955
    io ho fatto uno script per eliminare gli spazi ma non funziona
    codice:
    #!/bin/bash
    for FILE in `ls *\ *`; do
    FILE2 = `echo $FILE | sed 's/\ /_/'`
    mv $FILE $FILE2
    done
    qualcuno riesce ad individuare l'errore?
    In a world without walls and fences, who needs windows and gates?

  5. #5
    Originariamente inviato da Rommel
    io ho fatto uno script per eliminare gli spazi ma non funziona
    codice:
    #!/bin/bash
    for FILE in `ls *\ *`; do
    FILE2 = `echo $FILE | sed 's/\ /_/'`
    mv $FILE $FILE2
    done
    qualcuno riesce ad individuare l'errore?

    Prova a vedere se con tr riesci a ottenere qualcosa (man tr, non l'ho mai usato)

  6. #6
    Io vorrei invece fare uno script che, per esempio, cerca in un nome file, o in una directory, il carattere "à" e lo sostituisce con "a"...
    Come devo fare??

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  7. #7
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Originariamente inviato da Rommel
    io ho fatto uno script per eliminare gli spazi ma non funziona
    codice:
    #!/bin/bash
    for FILE in ./* ; do
        FILE1=$(basename "$FILE")
        FILE2=`echo "$FILE1" | sed 's/\ /_/g'`
        mv "$FILE" "$FILE2"
    done
    Modifiche di rilievo:
    "$VAR" ... è consigliato quotare le variabili che possono contenere spazi bianchi
    VAR=valore ... non lasciare spazi tra l'operatore '=' ed i due operandi
    Inoltre ho aggiunto una 'g' in coda all'espressione di sed per prendere in considerazione tutti gli spazi e non solo il primo.
    Per basename... man basename

    @Sergej_D
    Ti è stato suggerito correttamente 'tr' che permette di tradurre un set di caratteri in un altro:
    echo 'terrà' | tr "à" "a"
    terra

    echo '24+12=0' | tr -s "0123456789" "0"
    0+0=0
    man tr
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.