[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: