Esercizio 3, prova pratica, 18-07-2013

From Sistemi Operativi
Revision as of 17:03, 12 April 2015 by Davide.crestini (talk | contribs) (Created page with "==Testo== <source lang="text"> Scrivere un programma python o uno script bash che cataloghi per nome tutti i file presenti in un sottoalbero. nameindex dir1 dir2 crea nel file...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Testo

Scrivere un programma python o uno script bash che cataloghi per nome tutti i file presenti in un sottoalbero.
nameindex dir1 dir2
crea nel file dir2 un link simbolico ad ogni file contenuto nell'albero che ha come radice dir1. Quando sono presenti piu' file
con lo stesso nome in diverse directory all'interno di dir1, viene posto un suffisso numerico al nome del link simbolico
se dir1 contiene i file pippo, pluto e paperino e la directory paperopoli e quest'ultima contiene i file paperino, qui quo e qua,
all'interno di dir2 divranno essere contenuti i seguenti link simbolici:
pippo → dir1/pippo
pluto → dir1/pluto
paperino → dir1/paperino
paperino1 → dir1/paperopoli/paperino
qui → dir1/paperopoli/qui
quo → dir1/paperopoli/quo
qua → dir1/paperopoli/qua

Soluzione di Krusty

import os, sys
from stat import *

exist={}

def Scan(pathname):

	for f in os.listdir(pathname):
		path = os.path.join(pathname,f)
		s = os.stat(path)
		if S_ISREG(s.st_mode):
			if f not in exist:
				exist[f] = 1
				os.symlink(path,f)	
			else:
				n = exist[f]
				exist[f] = exist[f] + 1
				os.symlink(path,(f+str(n)))	
				
		elif S_ISDIR(s.st_mode):	
			Scan(path)

#main

if not os.path.isdir(sys.argv[2]):
    os.makedirs(sys.argv[2])

os.chdir(sys.argv[2])
Scan(sys.argv[1])