[Soci SLIP] riorganizzare directories

Loredana Lo Conte llcfree a gmail.com
Gio 17 Feb 2011 19:29:08 CET


On Thu, 2011-02-17 at 10:26 +0100, Paolo Craveri wrote:

> >> capita che su un pc (dual boot win+linux) sul quale mettono le mani in
> >> molti si è creato, nella partizione win, un albero di directory simile
> >> a questo (molto semplficato):
> >> |-- computi
> >> |-- comune
> >> |-- delibere
> >> |-- lavori
> >> |-- lettere
> >> |-- preve
> >> `-- temp
> >>     |-- computi
> >>     |-- comune
> >>     |-- delibere
> >>     |-- lavori
> >>     |-- lettere
> >>     `-- preve
> >>
> >> ho trascurato il terzo livello dell'annidamento per semplicità.
> >
> > E ovviamente il numero di livelli e' finito. O no?
> 
> Non proprio infinito...

Non e' infinito se non ci sono cicli. Basta che non ci siano link
nella struttura delle cartelle che formino cicli.

> esempio: il file "pippo.odt "  è stato modifcato da utenti diversi
> nella cartella "computi"  nei diversi livelli.
> Rinuncio a cercare di creare un file "pippo.odt" unico che tenga conto
> delle diverse modifiche. Mi basta il file pippo.odt aggiornato più
> recentemente.
> stesso file= stesso nome di file

# mi sono creata questa struttura di test:

mkdir delibere
mkdir -p temp/delibere
mkdir -p temp/temp/delibere

# modifico i files (mettici un secondo tra
# uno e l'altro)

touch delibere/pippo.odt
touch temp/delibere/pippo.odt
touch temp/temp/delibere/pippo.odt

touch temp/temp/delibere/paperino.odt
touch temp/delibere/paperino.odt
touch delibere/paperino.odt

find . -type f -printf  "%f\t%T@\t%h\n" | sort -r -k1,2

# genera:

pippo.odt	1297965995.2991108950	./temp/temp/delibere
pippo.odt	1297965984.1271105810	./temp/delibere
pippo.odt	1297965975.2751102480	./delibere
paperino.odt	1297966025.4751116370	./delibere
paperino.odt	1297966014.9271121540	./temp/delibere
paperino.odt	1297966003.9871098390	./temp/temp/delibere

La prima occorrenza di ogni nome di file e' l'ultima modificata,
la seconda colonna e' la data in cui e' stata modificato il file,
espressa in secondi a partire dal 1 gennaio 1970 GMT, la terza
e' la cartella in cui trovi il file modificato per ultimo.

Io salverei l'output in un file (per documentazione) e ci farei
girare sopra un programmino perl che muove i files da dove sono
a dove devono andare a finire (solo il primo, salta quelli con
lo stesso nome). 

NOTA: funziona solo con nomi di files decenti (no spazi etc). 
I tuoi lo sono? Se no, bisogna complicarsi la vita, ma non
di molto.

Loredana







Maggiori informazioni sulla lista Soci