|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Bonjour.
split fonctionne très bien pour le découpage de fichiers, mais pour autant que je sache il ne permet pas de travailler sur un fichier découpé dés qu'il a été achevé, mais seulement quand tous les fichiers ont été achevés (du moins l'emploi d'un pipeline | ne semble pas avoir d'effet). Je vois bien une solution alternative mais c'est clairement du bricolage et imprécis : Après avoir lancé la découpe lancer un sous-shell parallèle qui se composerait d'une boucle avec un sleep (probablement d'une seconde) et qui vérifierait l'existence et la taille d'un fragment de fichier, si la taille étant celle désirée alors ce fichier a fini d'être construit et on peut travailler dessus (emploi de stat pour obtenir la taille du fichier). (je veux faire un md5sum sur chaque fichier découpé). Y'a t'il un meilleur moyen que cette approximation ? Peut être avec cut, mais dans ce cas ne serait ce pas trop l'usine à gaz en terme de performances et ressources utilisées comparé à l'emploi de split et la méthode que je décris (sachant que les fichiers peuvent faire plusieurs giga octets) ? Ah et aussi existe t'il un moyen d'ordonner à split de commencer avec l'indice 1, plutôt que 0 pour les suffixes de fichier ? (même si on peut éventuellement renommer les fichiers, autant le faire à la création) Par contre la solution que j'ai en tête n'est "viable" que pour les fichiers volumineux, pour les petits fichiers le temps de découpe serait très faible, mais bon je peux gérer cela manuellement avec une condition, pour de tels fichiers un md5sum lancé à chaque fin de création de fichier serait superflu, voir même "néfaste" pour les performances. |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Une solution parmi d'autres sûrement... L'idée c'est d'utiliser la sortie verbeuse de split (--verbose) afin d'en extraire le nom de chaque fichier généré au fur et à mesure de sa création (selon le man de split "--verbose print a diagnostic just before each output file is opened") et de passer ce dernier à md5sum via la lecture de la sortie standard. Démonstration : Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
10
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Déjà merci pour ton script.
Par contre je n'y comprends pas grand chose Je comprendrais l'écriture ésotérique propre au bash en me tapant le man, mais là ou je bloque vraiment c'est à la double redirection : Code :
done < <(split -d -l 100000 --verbose plop) Plutôt que spammer la sortie standard y'a moyen d'extraire le nom du fichier et de rediriger vers > dev/null (je ne me rappelle plus la syntaxe exacte) ? |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Citation:
Citation:
Citation:
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|||
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Au temps pour moi, j'avais pas testé le script et pas vu le ls (double faute).
Bon bah du coup je ne pense pas qu'il y ait une meilleure solution que la tienne ![]() A moins que peut être en se passant de split et utilisant cat directement, reste la question du résultat au niveau des ressources utilisées et des performances obtenues. (sachant qu'il ne s'agit pas de fichiers textes) Une idée à ce sujet ? Je veux dire est que ça vaut le coup que j'essaye ou vous savez d'or et déjà que cela sera moins performant que cette solution ? |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Je me suis rendu compte que cette méthode est horriblement inefficace (un md5 sur chaque fichier même si le md5 précédent n'est pas achevé, tout en continuant la découpe). Mon processeur en pleure encore.
Je vais vraisemblablement utiliser dd plutôt, me permettant ainsi de gérer les md5sum avec une file d'attente. De toute façon je devrais renommer les fichiers créés par split, car il ne permet pas pour les suffixes de commencer par 1 au lieu de 0. (choix personnel plus human-friendly) Merci en tout cas de ces réponses qui m'ont fait grimper quelques échelons sur la voie de la connaissance absolue.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com