*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #20 il: 07 Giugno 2013, 11:33:26 »
Lascia fare il codice a me. Ora supporta anche i nomi/numeri non consecutivi.
Codice:

Codice: [Seleziona]
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:
« Ultima modifica: 07 Giugno 2013, 11:44:46 da dude »
J:
unita' 4/1981
comp: 7.99%

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 30.886
  • 185
    • Se proprio non hai un cazzo da fare...
Re:Rinomina di massa
« Risposta #21 il: 07 Giugno 2013, 11:36:50 »
ABORT ABORT ABORT
 :omgonoz:

 :asd:
Sii ottimista, come lo eri da bambino.
Sii realista come l'esperienza ti ha insegnato.
Sii un sognatore, con l'ottimismo che hai sempre avuto e il realismo dalle verità inconfutabili, e costruirai i sogni che hai sempre avuto in quel cassetto.

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #22 il: 07 Giugno 2013, 11:44:26 »
Ma sono coglione? Dopo quella riga ci andrebbe un sys.exit(1). :asd.
J:
unita' 4/1981
comp: 7.99%

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #23 il: 07 Giugno 2013, 14:58:11 »
Codice: [Seleziona]
#!/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

« Ultima modifica: 07 Giugno 2013, 14:59:51 da sgnablo »
スニャブロ 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."

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #24 il: 07 Giugno 2013, 15:03:28 »
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%

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #25 il: 07 Giugno 2013, 15:10:03 »
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.

Codice: [Seleziona]
#!/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."

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #26 il: 07 Giugno 2013, 15:11:08 »
Il mio script supporta le cartelle, le rinomina. :asd:

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

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 30.886
  • 185
    • Se proprio non hai un cazzo da fare...
Re:Rinomina di massa
« Risposta #27 il: 07 Giugno 2013, 15:11:49 »
Io tifo per Eldar :lkirule:
Sii ottimista, come lo eri da bambino.
Sii realista come l'esperienza ti ha insegnato.
Sii un sognatore, con l'ottimismo che hai sempre avuto e il realismo dalle verità inconfutabili, e costruirai i sogni che hai sempre avuto in quel cassetto.

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #28 il: 07 Giugno 2013, 15:12:53 »
fac iea, trovato:

-v natural sort of (version) numbers within text

Codice: [Seleziona]
#!/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."

*

Offline Cire

  • Utente più fastidioso del foro, ben più di Sacco
  • ********
  • 28.999
  • 91
  • Ogni donna sogna un pezzo di Cire
    • Netline Blog
Re:Rinomina di massa
« Risposta #29 il: 07 Giugno 2013, 15:16:15 »
Vai con la guerra.
:happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:  :happy: :happy:  :happy:  :happy:  :happy:  :happy:  :happy:

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #30 il: 07 Giugno 2013, 15:16:35 »
Funziona con 1 7 9 11 177000? Mi scoccia provare. :asd:
J:
unita' 4/1981
comp: 7.99%

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #31 il: 07 Giugno 2013, 15:19:45 »
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."

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #32 il: 07 Giugno 2013, 15:23:04 »
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."

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 30.886
  • 185
    • Se proprio non hai un cazzo da fare...
Re:Rinomina di massa
« Risposta #33 il: 07 Giugno 2013, 15:55:28 »
Secondo me è meglio assembly :lkof:
Sii ottimista, come lo eri da bambino.
Sii realista come l'esperienza ti ha insegnato.
Sii un sognatore, con l'ottimismo che hai sempre avuto e il realismo dalle verità inconfutabili, e costruirai i sogni che hai sempre avuto in quel cassetto.

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #34 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:
J:
unita' 4/1981
comp: 7.99%

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 30.886
  • 185
    • Se proprio non hai un cazzo da fare...
Re:Rinomina di massa
« Risposta #35 il: 07 Giugno 2013, 17:01:40 »
Hai fatto bingo bindo!
Sii ottimista, come lo eri da bambino.
Sii realista come l'esperienza ti ha insegnato.
Sii un sognatore, con l'ottimismo che hai sempre avuto e il realismo dalle verità inconfutabili, e costruirai i sogni che hai sempre avuto in quel cassetto.

*

Offline noi3

  • Incasinatore ufficiale del foro
  • ******
  • 10.806
  • 112
Re:Rinomina di massa
« Risposta #36 il: 07 Giugno 2013, 17:04:03 »
Genno, dimentichi sempre il come se fosse antani finale
K, fottiti
Fai contenta la tua tosse, fuma una sigaretta

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #37 il: 07 Giugno 2013, 21:23:36 »
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."

*

Offline the_original_g

  • ******
  • 7.618
  • 104
  • シェモキレッジェ
Re:Rinomina di massa
« Risposta #38 il: 07 Giugno 2013, 21:38:51 »
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%

*

Offline sgnablo

  • Tiranno Democratico
  • *******
  • 16.543
  • 249
  • [rimosso dallo staff]
Re:Rinomina di massa
« Risposta #39 il: 07 Giugno 2013, 21:40:40 »
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."