Re: Longa linha de comando.
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
Reply to: