Pagina 1 di 1
trovare stringhe uguali
Inviato: ven 3 set 2010, 15:33
da fortea
buongiorno a tutti!
ho bisogno di rinominare i file presenti in una directory (e nelle sottodirectory) in modo tale che non ci siano file con lo stesso nome.
La mia idea, finora, è di creare un elenco di file con
e mettere prima basename, in modo tale da ottenere solo i nomi dei file. Ma poi come posso ottenere le coppie di stringhe identiche e risalire all'intero indirizzo del file per modificarne il nome (ad esempio aggiunendo automaticamente un indice numerico)?
grazie mille!
Re: trovare stringhe uguali
Inviato: ven 3 set 2010, 15:52
da masalapianta
così al volo mi viene in mente questo:
for i in `find . -type f -exec basename {} \; |sort|uniq -d`; do for j in `find . -name "$i"`; do mv $j $j-`stat $j |grep Inode|awk '{print $4}'`;done ;done
sicuramente ci son soluzioni più efficienti (rispetto ad un doppio for), ma ho sonno e mi si sta rinfacciando la lasagna mangiata a pranzo
Re: trovare stringhe uguali
Inviato: ven 3 set 2010, 17:51
da Mario Vanoni
fortea ha scritto:buongiorno a tutti!
ho bisogno di rinominare i file presenti in una directory (e nelle sottodirectory) in modo tale che non ci siano file con lo stesso nome.
La mia idea, finora, è di creare un elenco di file con
e mettere prima basename, in modo tale da ottenere solo i nomi dei file. Ma poi come posso ottenere le coppie di stringhe identiche e risalire all'intero indirizzo del file per modificarne il nome (ad esempio aggiunendo automaticamente un indice numerico)?
Non posso esistere in una dir due files con nome metti "annabella",
neppure un file ed una subdir con lo stesso nome!
Quindi cerchi "annabella" nella prossima subdir,
e nelle altre X subdir/subdir/... successive,
e ne vorresti cambiare il nome.
Ho capito il tuo problema?
Con find(1) trovi tutte le "annabella",
ma come rinominarle, al livello sub2, sub3, sub4 ecc.?
Soprattutto con quale criterio?