Eu estou estou usando esse comando para procurar string em arquivos em um servidor Unix, mas me passaram esse comando e eu queria entender melhor o que ele faz, alguém poderia me ajudar?
find . -type f -name '*.*log*'|xargs grep 'StringAProcurar'
Gostaria de saber para que server cada parte do comando e porque usar o find junto com o grep já que o grep server para fazer busca em arquivos.
find . -type f -name '*.*log*'| xargs grep 'StringAProcurar'
find: busca por arquivos dado um diretório
.(ponto): diretório atual. Se vc abrir o terminal e acessar o diretório /home/user, . (ponto) é um atalho para /home/user, ou seja, implicitamente é esse diretório.
type: para buscar arquivos no find é possível utilizar o comando com algum recursos para alterar o comportamento do comando, como options, tests e actions. type é um test que é usado para limitar o tipo de arquivos que vc quer buscar(diretório ou arquivo comum) por exemplo.
f: vc usa juntamente com o test type para dizer que vc quer procurar somente arquivos e não diretórios.
-name: permite vc definir um pattern para buscar os arquivos desejados.
'*.log': o pattern que vc tá passando para o test -name aplicar na busca. Nesse caso esse wildcard significa qualquer arquivo que tenha a extensão(que termina com) .log.
|: find enviará no resultado(a lista de arquivos encontrados) da busca para a standard output, então vc pode usar|(pipe) para redirecionar esse resultado para o standard input de outro comando.
xargs: converte o input que for passado via stantard input numa lista de argumentos para utilizar em outro comando.
grep 'StringAProcurar': para cada arquivo encontrado, verifica se no conteúdo do arquivo contém o pattern ‘StringAProcurar’.
grep serve para vc verificar se um determinado arquivo contém uma palavra ou padrão textual. grep não busca arquivos.