L'expansion d'un joker dans Bash est-elle garantie dans l'ordre alphabétique ? Je suis obligé de diviser un gros fichier en morceaux de 10 Mo pour qu'ils puissent être acceptés par mon dépôt Mercurial.
Donc je pensais que je pourrais utiliser :
split -b 10485760 Big.file BigFilePiece.
et ensuite à la place de :
cat BigFile | bigFileProcessor
Je pourrais le faire :
cat BigFilePiece.* | bigFileProcessor
à sa place.
Cependant, je n'ai pas trouvé d'endroit garantissant que l'expansion de l'astérisque (alias joker, alias *
) seraient toujours dans l'ordre alphabétique de sorte que .aa
est venu avant .ab
(par opposition à l'ordre d'horodatage ou quelque chose comme ça).
Y a-t-il des failles dans mon plan ? Quel est le coût de la performance de cat
le dossier ensemble ?
4 votes
Il est certain que vous n'adoptez pas la bonne approche. Si l'administrateur a fixé une limite à la taille des fichiers que vous avez dans le référentiel, vous devriez lui en parler. En ce qui concerne l'expansion, j'ai toujours vu que l'expansion était alphanumérique.
1 votes
Vous pouvez toujours passer par
sort
si vous avez besoin de manipulations supplémentaires.2 votes
Veuillez noter que Mercurial peut gérer des fichiers de n'importe quelle taille, limitée par la quantité de mémoire vive dont vous disposez. Vous recevrez un avertissement si vous ajoutez un gros fichier, car Mercurial suppose qu'il peut contenir le fichier en mémoire. Pour les fusions, Mercurial doit contenir deux fichiers en mémoire. Les machines disposant de peu de mémoire vive peuvent donc avoir des difficultés à extraire le fichier. Je viens de le tester, et
hg commit
sur unN
Le fichier d'un Mo nécessite environ3 * N
MB de RAM ethg update
nécessite environ2 * N
Mo de RAM. Ceci avec Mercurial 1.5 sous Linux.1 votes
@Warner
sort
trie les lignes, le globbing ne renvoie pas les lignes, doncsort
fait pas fonctionner en l'état.