Existe uma maneira de pesquisar arquivos considerando o conteúdo dos arquivos também?

2

Estou tentando encontrar um arquivo (muito antigo), do qual tenho certeza que está em algum lugar no meu NAS. Infelizmente eu tenho alguns dos meus arquivos antigos armazenados dentro de tar.gz, zip ou 7z.

Existe alguma maneira de pesquisar todos os arquivos e pastas, incluindo o conteúdo desses arquivos?

Talvez find ou locate possa ser instruído a considerar esses arquivos também e dar uma olhada no interior da árvore de diretórios?

    
por kerner1000 01.08.2015 / 20:06

1 resposta

4

Você pode pesquisar em cada tipo de arquivo específico da seguinte forma:

cd /dir/where/you/want/to/start/search
find . -iname '*.zip' -exec unzip -l {} \; | grep 'file_pattern'
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep 'file_pattern'
find . -iname '*.7z' -exec 7z l {} \; | grep 'file_pattern'

Você pode simplificar seu uso sempre pesquisando começando no diretório atual e aceitando o padrão de correspondência de arquivo (que pode incluir expressões regulares ou simplesmente todo ou parte do nome do arquivo) como um parâmetro de linha de comando:

Crie um script (chamado, por exemplo, "arcsearch") em seu caminho executável (por exemplo, / usr / local / bin), certificando-se de "chmod + x" para torná-lo executável, com este conteúdo:

find . -iname 
find . -iname '*.zip' -exec unzip -l {} \; | grep 
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep 
find . -iname '*.7z' -exec 7z l {} \; | grep 

Você pode simplesmente digitar:

arcfind whatever_you_want

e ele vai cuspir os resultados, tanto os arquivos "normais" quanto os arquivos dentro dos arquivos.

    
por Charles Boling 01.08.2015 / 20:28