Opération sur valeurs hexadécimales [KSH] - Shell/Batch - Programmation
Marsh Posté le 08-12-2014 à 17:13:13
Je vois une méthode "bourrin" qui devrait fonctionner, par contre ça coutera surement 1 a 2 sec de temps CPU :s
En gros l'idée serait de générer 2 fichiers :
- l'un qui contient la liste de tes fichiers nommé en hexa (FILE1)
- l'autre qui contient la liste des nombres en hexa compris entre 0 et FFFF (si possible créé à l'avance pour éviter de la regénérer à chaque fois) (FILE2)
Ensuite tu peux utiliser la commande "comm" pour sortir ce qui est présent dans "FILE2" et absent de "FILE1"
La commande "comm" est très rapide, mais implique que les fichiers soit trié de la même façon via un sort
Pour générer le fichier "FILE2" une boucle sur un printf devrait faire l'affaire (peut être qu'il y a mieux, je ne sais pas) :
Code :
|
et le comparatif
Code :
|
Edit : même pas besoin de rediriger le ls vers un fichier en fait :
Code :
|
Je viens de tester avec un jeu réduit et ça fonctionne nickel. Je pense même que si tu as les 65000 fichiers ça devrait être invisible niveau CPU si FILE2 est généré une fois au préalable
Edit2 : Vu que ça m'amusais ce truc, j'ai généré un répertoire avec les 65536 fichiers, j'en ai supprimé 2 et lancé le script en générant à la volée le fichier FILE2. Résultat du time, sur un poste linux de bureau, pas du tout un serveur :
Citation :
real 0m0.94s |
Et le script utilisé :
Code :
|
Marsh Posté le 08-12-2014 à 23:34:36
Bonsoir,
Merci pour cette solution, je testerais ça demain
Marsh Posté le 11-12-2014 à 13:06:07
salut,
trouvé sur un autre forum, et adapté au cas présent
Code :
|
Marsh Posté le 12-12-2014 à 11:07:36
watael, cela fonctionne parfaitement, un grand merci
Marsh Posté le 08-12-2014 à 09:07:32
Bonjour,
J'ai besoin de votre aide car j'ai besoin de lister de lister des valeurs hexadécimales disponibles numérotées de 0000 à FFFF et je ne sais comment m'y prendre.
Dans mon cas, j'ai des listes de fichiers nommés de la forme :
30C4
30C5
30C6
30C8
30CA
30CC
30CE
30D0
30D6
et j'aurai besoin de lister uniquement les "trous" ici par exemple 30C7 mais je ne sais pas du tout comment m'y prendre sachant que cette opération doit consommer le minimum de temps CPU (je ne peux détailler l'environnement mais c'est critique).
Merci pour votre aide.
---------------
Hebergement d'images | Le topic de la VR standalone