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

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: