PDA

View Full Version : aiuto urgente: home sputtanata, aggiunto suffisso .sbd a tutte le dir...


lnessuno
11-11-2004, 21:19
fortunatamente, solo a quelle non nascoste...

praticamente ho lanciato uno script che doveva convertirmi le email di evolution in formato thunderbird, in realtà mi ah combinato sto casino... a tutte le directory ha aggiunto il suffisso .sbd, e ora vorrei far tornare tutto come prima...

ho uno script che mi sono fatto che toglie il suffisso a tutte le dir nel percorso corrente:

for file in *.sbd ; do mv $file `echo $file | sed 's/\(.*\\).sbd/\1/'` ; done

e questo funziona, però mi manca un qualcosa che lo renda ricorsivo... ovvero che mi faccia questo lavoro per tutte le directory presenti nella home.

ho pensato all'uso di ls o di tree per prendere tutti i nomi delle dir che terminano in .sbd, pensando poi di riversare tutto in un file di testo, capovolgerlo (in modo che parta dal percorso più "profondo" per rinominare le dir fino alla home stessa), però non so come farlo... :(

lnessuno
11-11-2004, 21:27
un

ls -R |grep .sbd

va quasi bene, però mi raggruppa le sottodirectory che appartengono alla stessa dir...

./software/games.sbd/cube.sbd/packages.sbd/models.sbd/health.sbd:
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/hudguns.sbd:
chaing.sbd
rifle.sbd
rocket.sbd
shotg.sbd
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/hudguns.sbd/chaing.sbd:
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/hudguns.sbd/rifle.sbd:
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/hudguns.sbd/rocket.sbd:
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/hudguns.sbd/shotg.sbd:
./software/games.sbd/cube.sbd/packages.sbd/models.sbd/monster.sbd:
bauul.sbd
goblin.sbd
hellpig.sbd


e non mi va bene questo :(

kingv
11-11-2004, 22:11
in un file pippo.sh metti

#!/bin/sh
mv $1 `echo $1 | sed 's/\(.*\\).sbd/\1/'`

e poi nella home nella home:


find . -name *.sbd -type d -exec pippo.sh {} \;




non mi viene i mente una maniera di combinare le due cose in un unico comando :mad:

lnessuno
12-11-2004, 11:48
grazie, alla fine avevo già risolto... il mio metodo però è leggermente più complesso :D


ho risolto...


dunque:

con

ls -R |grep .sbd > sputtanate.txt

ho trovato tutte le dir che terminano in .sbd, però l'output veniva con delle righe ridondanti come nell'esempio sopra (le parti in rosso erano solo nomi di files duplicati).

con gambas mi sono fatto uno script che mi ha eliminato quelle righe (circa 500 in tutto, su 1800 che erano i risultati di ls) e ha messo tutto nel file sputtanate2.txt

con sort -r sputtanate2.txt > sputtanate3.txt ho invertito l'ordinamento delle dir all'interno del file, in modo che partissero dalla più profonda per arrivare alla meno profonda.

poi lo script che ho messo all'inizio, leggermente modificato, ha preso riga per riga il contenuto del file sputtanate3.txt e ha rinominato tutte le dir... :p

kingv
12-11-2004, 11:56
capito, a farlo a mano ci mettevi di meno :asd:


;)

lnessuno
12-11-2004, 12:08
su 1800 dir... :D

cmq lo script che ho fatto in gambas è poi molto semplice, qualcosa tipo


if mid(riga,1,2) = "./" then
apro il file di output
ci appendo la riga al fondo
chiudo il file di output
end if


:D