Re: bash pipe ed altro
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!
Reply to: