#20 07 Giugno 2013, 11:33:26 Ultima modifica: 07 Giugno 2013, 11:44:46 di dude
Lascia fare il codice a me. Ora supporta anche i nomi/numeri non consecutivi.
Codice:

import os, sys

newNames = [x for x in open('nomi_fin', 'r').read().split('\n') if x != '']
curNames = [int(x) for x in os.listdir('./') if x not in ['', 'py.py', 'nomi_fin']]
curNames.sort()

if len(newNames) != len(curNames):
        print('Length mismatch, something is wrong, ABORT ABORT ABORT')
        sys.exit(1)

for j in range(len(curNames)):
        i = curNames[j]
        print('Renaming {} -> {}'.format(i, newNames[j]))
        os.rename(str(i), newNames[j])


È un quick hack, è nei quick hack si mette il minimo indispensabile al funzionamento. Se ci sono altri requisiti me li devi dire, così ce li metto. :asd:
J:
unita' 4/1981
comp: 7.99%


Ma sono coglione? Dopo quella riga ci andrebbe un sys.exit(1). :asd.
J:
unita' 4/1981
comp: 7.99%

#23 07 Giugno 2013, 14:58:11 Ultima modifica: 07 Giugno 2013, 14:59:51 di sgnablo
#!/bin/bash
IFS='
' #separatore per gli elementi dell'array: a capo

#parametri#


ORIGINAL=./originali #percorso dei file da copiare
DESTINATION=./rinominati #percorso di destinazione
LIST=./lista  #nome file che contiene la lista di nomi





array=($(ls -1 $ORIGINAL))

len=${#array[*]}


i=0
while [ $i -lt $len ]; do
    row=$((i+1))'p' #calcolo la riga del file
    name=$(sed -n "$row" < $LIST) #ricavo il nome dal file
    cp $ORIGINAL/${array[$i]} $DESTINATION/"$name" #copio col nuovo nome
       
    let i++
done

echo "done!"



testato e funziona.

i file devono essere del tipo 01 02 ecc, perchè ls li ordina in quel modo. altrimenti ti ritrovi 1 10 11 ... 2 20 .. ecc. scegli tu come preferisci. i nomi devono essere scritti in un file, un nome per riga, e possono anche contenere spazi. tutti i parametri sono all'inizio dello script.

non fa controllo d'errore, e nella cartella di origine devono esserci SOLO i file da copiare. nel caso si può fare un po' di codice in più di controllo, se serve

スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."

Vedi? ls li ordina in quel modo, python li ordina come vuoi tu e quindi il mio script ordina numericamente :drd:
J:
unita' 4/1981
comp: 7.99%

probabilmente c'è un modo per ordinare come ti pare :asd:

ps: aggiunto un controllo, ora  nella cartella degli originali possono esserci anche cartelle, vengono ignorate.

#!/bin/bash
IFS='
' #separatore per gli elementi dell'array: a capo

#parametri#


ORIGINAL=./originali #percorso dei file da copiare
DESTINATION=./rinominati #percorso di destinazione
LIST=./lista  #nome file che contiene la lista di nomi


array=($(ls -1p $ORIGINAL | grep "[^/]$"))

len=${#array[*]}


i=0
while [ $i -lt $len ]; do
    row=$((i+1))'p' #calcolo la riga del file
    name=$(sed -n "$row" < $LIST) #ricavo il nome dal file
    cp $ORIGINAL/${array[$i]} $DESTINATION/"$name" #copio col nuovo nome
       
    let i++
done

echo "done!"
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."

Il mio script supporta le cartelle, le rinomina. :asd:

PYTHON RULEZ BASH INFERIOR LANGUAGE
J:
unita' 4/1981
comp: 7.99%


fac iea, trovato:

-v natural sort of (version) numbers within text

#!/bin/bash
IFS='
' #separatore per gli elementi dell'array: a capo

#parametri#


ORIGINAL=./originali #percorso dei file da copiare
DESTINATION=./rinominati #percorso di destinazione
LIST=./lista  #nome file che contiene la lista di nomi


array=($(ls -1pv $ORIGINAL | grep "[^/]$"))

len=${#array[*]}


i=0
while [ $i -lt $len ]; do
    row=$((i+1))'p' #calcolo la riga del file
    name=$(sed -n "$row" < $LIST) #ricavo il nome dal file
    cp $ORIGINAL/${array[$i]} $DESTINATION/"$name" #copio col nuovo nome
       
    let i++
done

echo "done!"


ora ordina i file anche se sono scritti 1 2 3 4 5 6 7 8 9 10 ecc, come ci si aspetterebbe.


a che minchia serve rinominare le cartelle? non è qualcosa che ha richiesto buntolo. e comunque, posso benissimo editare il codice in modo che rinomini anche quelle :P
python può pupparmela :drd:
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."


Funziona con 1 7 9 11 177000? Mi scoccia provare. :asd:
J:
unita' 4/1981
comp: 7.99%

penso di si, non ho provato :asd:
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."

btw funziona, ma ovviamente considera 7 come indice 2, ecc. d'altronde come minchia fa a sapere se mancano numeri? non esageriamo con il codice intelligente :asd:
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."


Secondo me è meglio usare venti linguaggi in un progetto, tipo un programma c++ con dentro c con dentro assembly che binda lua che usa sql per fare una query a mongodb. Tutto questo bindato da java, ovviamente :lkof:
J:
unita' 4/1981
comp: 7.99%


Genno, dimentichi sempre il come se fosse antani finale
K, fottiti
Fai contenta la tua tosse, fuma una sigaretta

Citazione di: dude il 07 Giugno 2013, 15:59:01
Secondo me è meglio usare venti linguaggi in un progetto, tipo un programma c++ con dentro c con dentro assembly che binda lua che usa sql per fare una query a mongodb. Tutto questo bindato da java, ovviamente :lkof:

mi sembra molto sensato usare sql (linguaggio per db relazionali) per fare una query a mongodb (database su file) :asd:
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."

DIMENTICAVO CHE OVVIAMENTE DEVI USARE UN WRAPPER, IGNORANTE
CI SONO DIPENDENCE LEGACY NEL PROGETTO

Non sei abbastanza enterprise :lkof:
J:
unita' 4/1981
comp: 7.99%

guarda, è un po' come dire che per compilare un codice C è necessario un cric idraulico. :asd:
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."