On Wed, Nov 05, 2008 at 08:05:10AM -0500, Édnei Rodrigues wrote:
> Bom dia lista.
> Tinha feito uma modificação em vários Makefile e , burrice, esqueci de
> inserir na expressão o nome do arquivo.
> Deixa eu explicar melhor:
> 
> tenho essa lista de makefile (exemplo):
> 
> [EMAIL PROTECTED] voip]$ find . -name Makefile
> ./upnp/libupnp/threadutil/Makefile
> ./upnp/libupnp/upnp/doc/Makefile
> ./upnp/libupnp/upnp/Makefile
> ./upnp/libupnp/ixml/doc/Makefile
> ./upnp/libupnp/ixml/Makefile
> ./upnp/libupnp/Makefile
> ./upnp/libigdctrl/Makefile
> ..
> ..
> 
> dentro deles está:
> [EMAIL PROTECTED] voip]$ find . -iname Makefile -exec grep "SPARSE ATIVO" {} 
> \;
> 
>         @echo " SPARSE ATIVO!!!"
>         @echo " SPARSE ATIVO!!!!"
>         @echo " SPARSE ATIVO!!!!"
>         @echo " SPARSE ATIVO!!!!"
>         @echo " SPARSE ATIVO!!!"
>         @echo " SPARSE ATIVO!!!"
>         @echo " SPARSE ATIVO"
>         @echo " SPARSE ATIVO!!!!"
>         @echo " SPARSE ATIVO!!!!"
> 
> Notem que eu inseri essa expressão em cada makefile, mas esqueci de fazer
> isso:
> 
> @echo " SPARSE ATIVO!!! - /upnp/libigdctrl "
> @echo " SPARSE ATIVO!!!! - ./upnp/libupnp/upnp/doc/"
> 
> e assim vai....É possível fazer isso ? Pegar o makefile respectivo de cada
> diretório, inserir naquela expressão o diretório corrente ???
> 
> 
> 
> Obrigado pelas respostas.
> 
> 
> ------------------------------------

bom leventei aqui na minha máquina um ambiente para emular o seu caso:

[EMAIL PROTECTED]:/tmp/teste$ echo './upnp/libupnp/threadutil/Makefile
./upnp/libupnp/upnp/doc/Makefile
./upnp/libupnp/upnp/Makefile
./upnp/libupnp/ixml/doc/Makefile
./upnp/libupnp/ixml/Makefile
./upnp/libupnp/Makefile
./upnp/libigdctrl/Makefile' | xargs -i@ sh -c 'path=$(dirname @); mkdir -p 
$path; touch @'
[EMAIL PROTECTED]:/tmp/teste$ tree
.
`-- upnp
    |-- libigdctrl
    |   `-- Makefile
    `-- libupnp
        |-- Makefile
        |-- ixml
        |   |-- Makefile
        |   `-- doc
        |       `-- Makefile
        |-- threadutil
        |   `-- Makefile
        `-- upnp
            |-- Makefile
            `-- doc
                `-- Makefile

8 directories, 7 files
[EMAIL PROTECTED]:/tmp/teste$ find . -iname Makefile -exec sh -c 'echo @echo \" 
SPARSE ATIVO!!!\"  > {}' \;

então fiz uma solução:

[EMAIL PROTECTED]:/tmp/teste$ find . -iname Makefile -printf "%p %h\n" | 
while read file path; do sed 's#\(SPARSE ATIVO!*\)"#\1 - '"$path"'"#' $file; 
done

isso é para testar; filtre a saída com um grep e se for o que está
procurando insira a opção -i no comando sed, "sed -i ..."

Responder a