[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]
>