On Wed, Sep 19, 2001 at 08:45:13PM -0300, Algot wrote: > Amigos, > > Estou tentando fazer o seguinte: > > - procurar todos os arquivos com o nome teste.bak no diretório /home/ e > subdiretórios. > - mover esses arquivos para o diretorio /tmp/. > - colocar na primeira linha de todos eles a frase "Isso é um teste". > > Mas, estou tentando fazer isso tudo em apenas uma linha de comando. Tem > como ? > Obrigado, > > Algot.
(valido para bash e compatíveis) começe com: $ find /home isso listará todos os arquivos que estão em /home separe o arquivo que voce precisa com um grep ou egrep: $ find /home | egrep '/teste.bak^' o "^" significa fim da linha agora faça um "for" para executar uma sequencia de comandos para todos estes arquivos: $ for ARQUIVO in `find /home | egrep '/teste.bak^'`; do echo $ARQUIVO; done entre o "do" e o "done", voce pode colocar o que quiser, usando a variavel $ARQUIVO como o nome do arquivo no loop for corrente. agora, temos um problema... voce quer mover todos arquivos com o mesmo nome para o mesmo diretorio??? eles vão um sobrescrever o outro... voce pode usar o comando "tempfile" para isso. assim, eles serao gravados em um arquivo temporario isso deve resolver: TMPFILE=`tempfile`; echo "isso e um teste" > $TMPFILE; cat $ARQUIVO >> $TMPFILE; entao, acho que isso resolve o problema... teste ai... for ARQUIVO in `find /home | egrep '/teste.bak^'`; do \ TMPFILE=`tempfile`; \ echo "isso e um teste" > $TMPFILE; cat $ARQUIVO >> $TMPFILE; \ echo "arquivo $ARQUIVO modificado e gravado como $TMPFILE"; \ done

