Vamos começar salvando o arquivo em algum lugar primeiro.
Assuma o seu comando:
find -type f -exec grep -il "xml" {} \;
e leia: Quais são os operadores de controle e redirecionamento do shell? para onde ele diz:
>
: Directs the output of a command into a file.
para tornar seu comando algo como:
find -type f -exec grep -il "xml" {} \; > /tmp/report.txt
Aproveito esta oportunidade para recomendar alguns ajustes ao seu comando find
atual:
-
Pode ser uma preferência pessoal (ou memória herdada da minha parte), mas gosto de especificar o diretório inicial para
find
, assim:find / -type f ....
para que não importe de onde você começa o comando ou o script, ele sempre produzirá os resultados esperados.
- Seu comando
find
não está procurando por arquivos "* .xml", ele está procurando por arquivos que contenham a cadeia "xml" (sem distinção entre maiúsculas e minúsculas). Se a pesquisa de conteúdo for o que você deseja, pare de ler este parágrafo. Se você realmente quiser encontrar arquivos que tenham "xml" em seu nome de arquivo , procure por algo como:find / -type f -iname '*xml*'
- ondeiname
informafind
para corresponder a nomes de arquivos que contêm -insensível) "xml". Se você só se preocupa com "xml" estando no end do nome do arquivo, usefind / -type f -iname '*xml'
ou... -iname '*.xml
, se quiser um período antes do xml.
2a. Se você está querendo pesquisar o conteúdo dos arquivos, considere alterar seu caso geral grep
para um que diga ao grep que você está procurando uma string fixa: ... grep -Fil xml ...
para acelerar as coisas um pouquinho.
-
Para informar a localização para relatar apenas os arquivos que foram modificados nos últimos cinco dias, use
-mtime -5
. -
Como você marcou o Q como Linux, presumo que você tenha o GNU find (
man find
e procure por "GNU" na Descrição para confirmar). Nesse caso, pode acelerar um pouco mais o processo dizendofind
para passar vários arquivos para cada exec usando esta sintaxe:find / -type f -mtime -5 -exec grep -Fil xml {} + > /tmp/report.txt