Gostaria de procurar no meu disco rígido todas as coleções de arquivos compactados, como zip, gzip, bzip e outros, e ter o conteúdo daqueles pesquisados por determinados tipos de arquivo (como imagens). Anti-vírus ', então acredito que deve haver um caminho.
10
foo
mas nãofoo.png
.Respostas:
A abordagem mais simples seria listar o conteúdo do arquivo e procurar arquivos da extensão relevante. Por exemplo, com um
zip
arquivo:A
-sf
opção informazip
para listar os arquivos contidos em um arquivo morto. Em seguida,grep
procurará um.png
ou.jpg
que esteja no final da linha ($
). Ele-E
permite expressões regulares estendidas, para que possamos usar|
como OR e-i
torna a correspondência sem distinção entre maiúsculas e minúsculas.No entanto, cada ferramenta de arquivamento possui um comando diferente para listar o conteúdo. Eu escrevi um script que pode lidar com a maioria dos mais populares. Se você salvar esse script como
list_compressed.sh
, poderá executar:Isso mostraria os tipos de imagem mais comuns. Observe que essa abordagem pressupõe que o tipo de arquivo possa ser determinado pela extensão do arquivo. Ele não encontrará arquivos de imagem que não tenham extensão e não reconhecerá arquivos com a extensão errada. Não há como lidar com isso sem realmente extrair os arquivos do arquivo morto e executar
file
em cada um deles.Se você deseja encontrar todos os arquivos que contêm arquivos de imagem no disco rígido, combine o acima com
find
:O comando find irá procurar por todos
.gz
,.tgz
ou.zip
arquivos (você pode adicionar quantas extensões quiser), que são passados pelo meu script. Os-q
suprime grep sua saída normal, nada será impresso. Ele&& echo
imprimirá o nome do arquivo apenas se ele tivergrep
sido bem-sucedido.fonte
-name
para-iname
. No entanto, há pouco sentido, muitos programas de compactação (gzip, por exemplo) precisam da extensão específica.GZ
não vai funcionar.Não é tão avançado quanto o terdon, mas isso fará:
Salve o código a seguir, em uma pasta na qual todo o seu código reside, como
finda.sh
ou qualquer outro nome que desejar:Então, em um diretório em que todos os seus arquivos estão, execute-o e esta é a saída:
fonte
*.*
apenas corresponderá arquivos com uma extensão. Além disso, isso listará todos os arquivos em todos os arquivos, você não está testando nenhum tipo de arquivo.