Je voudrais analyser mon disque dur pour toutes les collections de fichiers compressés comme zip, gzip, bzip et autres et avoir le contenu de ceux recherchés pour certains types de fichiers (tels que les images). Anti-virus, faites-le, donc je pense qu'il devrait y avoir un moyen.
10
foo
mais pasfoo.png
.Réponses:
L'approche la plus simple serait de lister le contenu de l'archive et de rechercher les fichiers de l'extension concernée. Par exemple, avec un
zip
fichier:L'
-sf
option indiquezip
de lister les fichiers contenus dans une archive. Ensuite, legrep
va rechercher un.png
ou.jpg
qui se trouvent à la fin de la ligne ($
). Le-E
permet des expressions régulières étendues, donc nous pouvons utiliser|
comme OR et le-i
rend insensible à la casse correspondante.Cependant, chaque outil d'archivage a une commande différente pour répertorier le contenu. J'ai écrit un script qui peut gérer la plupart des plus populaires. Si vous enregistrez ce script sous
list_compressed.sh
, vous pouvez alors exécuter:Cela vous montrerait les types d'images les plus courants. Notez que cette approche suppose que le type de fichier peut être déterminé par l'extension du fichier. Il ne trouvera pas les fichiers image sans extension et ne reconnaîtra pas les fichiers avec la mauvaise extension. Il n'y a aucun moyen de gérer cela sans extraire les fichiers de l'archive et les exécuter
file
sur chacun d'eux.Si vous souhaitez trouver toutes les archives contenant des fichiers image sur votre disque dur, combinez ce qui précède avec
find
:La commande find recherchera tous
.gz
,.tgz
ou.zip
fichiers (vous pouvez ajouter autant d'extensions que vous le souhaitez), ceux-ci sont ensuite passés par mon script. Le-q
supprime la sortie normale de grep, rien ne sera imprimé. Le&& echo
affichera le nom de l'archive uniquement si l'opérationgrep
a réussi.la source
-name
à-iname
. Cependant, cela ne sert à rien, de nombreux programmes de compression (gzip, par exemple) nécessitent l'extension spécifique.GZ
ne fonctionnera pas.Pas aussi avancé que terdon, mais cela fera:
Enregistrez le code suivant, dans un dossier où réside tout votre code, en tant que
finda.sh
ou tout autre nom comme vous le souhaitez:Ensuite, dans un répertoire où se trouvaient toutes vos archives, exécutez-le et voici la sortie:
la source
*.*
ne correspondra que les fichiers avec une extension. En outre, cela répertoriera tous les fichiers dans toutes les archives, vous ne testez aucun type de fichier.