Eu usaria:
sudo grep -rIlZ --exclude=${HISTFILE##*/} --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e 'MyWord' | xargs -0 cat > MyOutputFile
- Largue
sudose não estiver procurando nos diretórios do sistema. - Alterar (diretório raiz)
'/'para o diretório atual'.'ou diretório específico, ou seja,'/home/me/stuff' - Remova
mntpara incluir arquivos do Windows montados emmnt. - Remova
libpara incluir arquivos de origem do Linux - Excluindo diretórios necessários para a velocidade. Veja: 'grep'ing todos os arquivos para uma string demora muito tempo
-
--exclude=${HISTFILE##*/}é necessário se você executar o comando uma segunda vez ou se a string de procuraMyWordjá tiver sido usada em um comando diferente antes. Isso evita a inclusão de 5 mil linhas de histórico ($ HISTFILE). -
-rrecursivo,Iignora arquivos binários,lZgera um byte zero após cada nome de arquivo em vez da nova linha usual. Terminadores nulos (zero bytes) necessários paraperl -0,sort -zexargsusado paracat(imprimir) o conteúdo do arquivo. -
> MyOutputFileenvia a saída para o arquivo em vez da tela. Deixe isso para a saída para a tela.
Observação: Faltando a saída é o nome do arquivo, apenas o conteúdo do arquivo é listado.