http://www.zago.eti.br/diff.txt Dicas, FAQ, exemplos e scripts com uso do diff pra comparar arquivos, localizar diferenças entre arquivos..... Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ******************************************************************************** ******************************************************************************** meld: Comparação de Código ou Texto http://www.dicas-l.com.br/dicas-l/20040822.php ******************************************************************************** No CL10 o manual está em portugues, na linha de comando execute: man diff Pra instalar: apt-get install diffutils veja os resultados na compararaçãoe entre dois arquivos: diff arq1 arq2 diff -puN arq1 arq2 Comparar dois arquivos de configuração, por exemplo comparar o squid.conf da sua instalação com um modelo do FAQ, pra evitar acidentes, faça copia do dois pra outro local, exemplo /tmp Pra facilitar a leitura e comparação dos arquivos vamos remover todas as linhas comentadas e as em branco, isto é opcional mas facilita na leitura e comparação, então em uma tacada só: egrep -v "^#|^$" /etc/squid/squid.conf > /tmp/squid1 salve o outro squid.conf em /tmp e nomeie com squid.conf2 Limpar ele também: egrep -v "^#|^$" /tmp/squid.conf2 > squid2 agora é só comparar os dois, veja as diferenças nos resultados de: diff squid1 squid2 Ou em duas colunas, fique atento aos sinais que apontam as diferenças, "|", ">" e "<", também o desloamento das colunas. diff -y --suppress-common-lines squid1 squid2 Ou em duas colunas, cuidado que emenda alguns resultados. diff -y --suppress-common-lines squid1 squid2 | tr -d '\011' | tr -d ' ' Ou diff -y --suppress-common-lines squid1 squid2 | tr -d '\011' Ou com sinal de "+" e "-" pra diferencia-los: diff -puN squid1 squid2 Exibir somente as linhas iniciais, exemplo para 10 primeiras linhas; diff -uNr meuteste meuteste2 | head Definir quantas linhas iniciais deve exibir, altere o -20 do exemplo abaixo. diff -uNr meuteste meuteste2 | head -20 Exibir somenta as linhas finais, altere o -20 do exemplo abaixo para o desejado. diff -uNr meuteste meuteste2 | tail -10 Redirecionar o resultado para aquivo, no final da linha de comando acrescente os redirecionadores ">>" /caminho/nome-do-arquivo, quando omitido o caminho salva no diretório local. diff -uNr meuteste meuteste2 | tail -10 >> /tmp/difmeuteste diff -uNr meuteste meuteste2 | tail -10 >> difermeuteste diff -uNr meuteste meuteste2 >> difermeuteste Existem muitas opções, continue pesquisando até encontrar a melhor forma.... ******************************************************************************** Pegar somente as linhas existentes no arquivo1 e não repetidas no arquivo2, ignorando as demais existentes no arquivo2 (somente o que tem a mais em arquivo1) exemplo onde; arquivo1 = /tmp/listarpm.txt arquivo2 = /home/zago/listarpm.txt diff -y --suppress-common-lines /tmp/listarpm.txt /home/zago/listarpm.txt > /tmp/arqtmp.txt cat /tmp/arqtmp.txt | awk '{print $1}' > /tmp/arqtmp1.txt cat /tmp/arqtmp1.txt | sed '/^>/d' > /tmp/arqlimpo.txt rm -rf /tmp/arqtmp.txt rm -rf /tmp/arqtmp1.txt cat -A /tmp/arqlimpo.txt Isto cria um arquivo limpo, sem marcações de tabulações e caracteres especiais, nesta listagem contém somente nomes de pacotes a mais em /tmp/listarpm.txt ******************************************************************************** diff para comparar arquvios de dois diretórios diff -ur dir1 dir2 > diferenca.txt diff -ur /tmp/teste /tmp/testez > /tmp/diferenca.txt cat diferenca.txt Somente em /tmp/teste: arquivo.log Somente em /tmp/teste: arquivo.txt Somente em /tmp/testez: comandos.txt ******************************************************************************** comm cat /tmp/instalar.txt flash-player Mplayer RealPlayer apache2 cat /tmp/listarpm.txt flash-player gxine Mplayer squid vlc samba apache2 comm -1 /tmp/instalar.txt /tmp/listarpm.txt >> difere.txt cat /tmp/difere.txt flash-player gxine Mplayer squid vlc samba apache2 rm /tmp/difere.txt comm -13 /tmp/instalar.txt /tmp/listarpm.txt >> difere.txt gxine Mplayer squid vlc samba apache2 rm /tmp/difere.txt comm -1 /tmp/listarpm.txt /tmp/instalar.txt >> difere.txt cat difere.txt Mplayer RealPlayer apache2 rm /tmp/difere.txt comm -1 /tmp/listarpm.txt /tmp/instalar.txt >> difere.txt comm -13 arqlista1 arqlista2 ******************************************************************************** > Estou com uma linha a mais no meu arquivo passwd em relação ao shadow e > precisa descobrir qual é, se alguem tiver uma dica.... diff <(cut -d: -f1 /etc/passwd | sort) <(cut -d: -f /etc/shadow | sort) OU bem simples essa: cat /etc/passwd |cut -d: -f1 |sort >/tmp/p cat /etc/shadow |cut -d: -f1 |sort >/tmp/s diff /tmp/p /tmp/s vc descobre qual user tah no shadow e nao no passwd ou vice-versa... OU diff arquivo1 arquivo2 > arquivo3 para comparar diretorios use -r diff -r direrorio1 diretorio2 ******************************************************************************** comm comm - compara dois arquivos ordenados linha a linha Veja no manual: man comm Pra ver se está instalado: rpm -qf /usr/bin/comm textutils-2.1-23852cl Pra instalar: apt-get install textutils ******************************************************************************** ******************************************************************************** ******************************************************************************** ********************************************************************************