Como você está tentando corresponder as primeiras 30 linhas de seus arquivos, você pode salvar o texto em um arquivo, por exemplo: ref_file
, em seguida, use diff
para comparar o arquivo de referência com as primeiras 30 linhas de cada arquivo:
find . -name "*.[ch]" -exec ./myscript {} \; -print
em que ./myscript
é
#!/bin/sh
head -n 30 "$1" | diff - /path/to/ref_file >/dev/null
so -print
no primeiro comando só é executado se o -exec
anterior avaliou verdadeiro , ou seja, se não houve diferença entre o arquivo de referência e as primeiras 30 linhas do arquivo atual
Ou, se você preferir sem um script e salvando os nomes dos arquivos em logfile
:
find . -type f -exec sh -c 'head -n 30 "$0" | diff - /path/to/ref_file >/dev/null' {} \; -print >logfile
Observe que isso pressupõe que você esteja procurando uma correspondência exata. Caso contrário, diff
sairá com 1
, mesmo que a diferença seja um único espaço.