shell-script-pt
[Top][All Lists]
Advanced

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

Re: Percorrendo uma lista com duplas de arquivos


From: Marcio Gil
Subject: Re: Percorrendo uma lista com duplas de arquivos
Date: Thu, 12 Aug 2010 20:07:28 -0000
User-agent: eGroups-EW/0.82

Acabou que fiz desta maneira:

$ redund -n | grep -v "/\(.svn\|__\)\|NaoUsad[oa]\|Antig[oa]" | sort 
>duplicados.txt
$ redund -i | grep -v "/\(.svn\|__\)\|NaoUsad[oa]\|Antig[oa]" | sort 
>identicos.txt
$ grep -Fvf identicos.txt duplicados.txt >diferentes.txt 

Mas na hora de usar o laço 'while':

$ while read f ; do vimdiff $f ; done <diferentes.txt 
Vim: Warning: Input is not from a terminal
2 files to edit
Vim: Error reading input, exiting...

Vim: Finished.
shell returned 1

Porém funciona com o 'diff':

$ while read f ; do diff -q $f ; done <diferentes.txt
(...)

O jeito foi fazer com o laço 'for' mesmo:

$ IFS=$'\n' ; for f in `<diferentes.txt` ; do IFS=$' \t\n' ; vimdiff $f ; done


--- Em address@hidden, Arkanon <arkanon@...> escreveu
>
> Em 11 de agosto de 2010 09:54, Marcio Gil <marciomgil@...> escreveu:
> 
> > IFS=$'\n'
> > for f in `<iguais.lst` ; do diff -q $f ; done
> 
> 
> Isso acontece pq voce assume q o IFS agora eh apenas a quebra de linha.
> 
> Alem da sugestao do Julio, voce pode tentar:
> 
> 1.
> 
> OIFS=$IFS
> IFS=$'\n'
> for f in `<iguais.lst` ; do IFS=$OIFS && diff -q $f ; done
> 
> que funciona pq qdo voce volta IFS ao valor original, o valor temporario
> (\n) ja foi usado por <.
> 
> 2.
> 
> while read f; do diff -q $f ; done <iguais.lst
> 
> que nao meche no IFS.
> 
> []'s
> 
> -- 
> (o_   ------------------     __o
> //\   arkanon@...   _`\<,
> V_/_  --- www.lsd.org.br  (_)/(_)
> ---------------------------------
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]