On Fri, Aug 01, 2003 at 08:08:41AM +0200, Roberto Bartola wrote: > Ciao a tutti, non capisco perche' non funziona il comando: > > find . -user bartola | chown pippo * > ne' > find . -user bartola < chown pippo * > che vorrei usare per modificare l'user di tutti i file di bartola in > file di pippo.
questa e' facile (man find) find . -user bartola -exec chown pippo {} \; > inoltre come posso rinominare i file che contengono una stringa nel nome > in file che ne contengono un'altra fermo restando gli altri caratteri? > una cosa tipo > > mv *ABC* *DEFGHJ* > che rinomini i file: > vvvvABCxxxx in vvvvDEFGHJxxxx > vv123vvABCxx456xx in vv123vvDEFGHJxx456xx > pippo/vvvvABCxxxx in pippo/vvvvDEFGHJxxxx > pippo/vv123vvABCxx456xx in pippo/vv123vvDEFGHJxx456xx questa e' piu' articolata: A=ABC ; B=DEFG ; find ./ -iname "*${A}*" | sed -e "{ s/\(.*\)${A}\(.*\)/mv \1${A}\2 \1${B}\2/ }" | sh (sostituisci ABC e DEFG con quello che ti pare) oppure piu' comodamente come script (chiamalo come ti pare e rendilo eseguibile): --8<---CUT HERE--- #!/bin/sh if [ -n "${1}" ] && [ -n "${2}" ] ; then find ./ -iname "*${1}*" | \ sed -e "{ s/\(.*\)\(${1}\)\(.*\)/mv \1\2\3 \1${2}\3/ ; }" | \ sh ; else echo "Usage: ${0} <STRING1> <STRING2>" ; fi --8<---CUT HERE--- sono ancora una pippa con sed, ma mi sto esercitando, quindi considera che si puo' sicuramente fare meglio -- mattia :wq!