Pare che Danilo Spada, in un momento di ispirazione, abbia scritto: > Ciao a tutti. > > Ma come posso cancellare ricorsivamente tutti i documenti con estensione > .DOC da un'infinita serie di sottocartelle ? Portabile tra Unix diversi: find . -name '*.doc' -o -name '*.DOC' -o -name '*.Doc' -print | xargs rm -f GNU only: find . -iname '*.doc' -print0 | xargs -0 rm -f <spieghino> Trova a paritre dalla directory corrente (.) i file che, terminano per .doc e scrivine i nomi su standard output, passandoli quindi a xargs il quale ne legge una manciata ed esegue il comando indicato come parametro (rm -f) seguito dalla manciata di nomi. Ha prestazioni migliori di "find ... -exec rm -f {} \;" perche` in quest'ultimo caso avvii un "rm -f" per ogni file da cancellare, mentre con xargs avvii un "rm -f" solo ogni N file (con N piuttosto grande). L'unico difetto con la soluzione portabile tra Unix e` che i nomi sparati fuori da find son separati con degli a capo, per cui se il nome di un file contiene un ritorno a capo (possibile, anche se improbabile), xargs lo vede come due nomi distinti... e che il find Unix di per se` non prevede -iname (case insensitive), ma solo -name. Ovviamente, c'e` la soluzione anche a questo con i tool GNU. "-print0" fa la stessa cosa di "-print", ma invece che usare un "a capo" per separare i nomi dei file, usa un byte a zero (che non e` valido nei nomi dei file). Chiaramente, anche xargs deve essere informato della cosa (-0). -- | \ \ | ___|_ |_ | matteo.ianeselli AT telecomitalia.it | _ \ | \ | _| / / Visita il LinuxTrent a _|_/ _\_| _|____|___|___| http://www.linuxtrent.it -- Per iscriversi (o disiscriversi), basta spedire un messaggio con SOGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx