Algum dos utilitários diff / grep pode fazer um “arquivo grep”? [duplicado]

1

... para continuar no título, basicamente o que eu quero é que eu dê a ele o arquivo, e o programa percorre todo o diretório do projeto e procura lá algum arquivo (todos eles diferem em nomes, naturalmente :) que são binários mesmo para o primeiro ...

É de certa forma, diff, mas eu não quero passar pelo diretório do projeto, já que existem muitos deles.

    
por Rook 30.11.2011 / 03:21

2 respostas

2

Desculpe, não vi a tag OS antes de postar. Mas também funcionaria no Windows com Cygwin ou UnxUtils.

O comando a seguir calcula as somas de verificação MD5 para todos os arquivos no diretório do projeto e exibe aquelas com a mesma soma de verificação que um arquivo de referência:

find /path/to/project -type f -exec md5sum {} \; | grep $( md5sum /path/to/reference/file | cut -c1-32 ) | cut -c35-

Os comandos cut são usados para extrair a soma de verificação de 32 caracteres ( -c1-32 ) e o nome do arquivo (-c35- ) da saída de md5sum .

    
por 01.12.2011 / 07:42
0

Isso funciona no Ubuntu 11.10:

#!/bin/bash
IFS="
"
for file in $(find $2 -type f)
do
    diff -s "$1" "$file" | grep "identical$"
done

Ele deve funcionar em qualquer distribuição com bash , find e diff .

$ ./recursive_diff.sh 2.gif Pictures/
Files 2.gif and Pictures/qzhm4k.gif are identical
    
por 30.11.2011 / 04:33