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
sudo
se 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
mnt
para incluir arquivos do Windows montados emmnt
. - Remova
lib
para 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 procuraMyWord
já tiver sido usada em um comando diferente antes. Isso evita a inclusão de 5 mil linhas de histórico ($ HISTFILE). -
-r
recursivo,I
ignora arquivos binários,lZ
gera um byte zero após cada nome de arquivo em vez da nova linha usual. Terminadores nulos (zero bytes) necessários paraperl -0
,sort -z
exargs
usado paracat
(imprimir) o conteúdo do arquivo. -
> MyOutputFile
envia 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.