tar
lui-même ne peut pas le faire, vous devez donc le créer à partir d'une liste correctement ordonnée. En principe, vous pouvez alors utiliser tar
l' -T
option de, mais il n'y a aucun moyen de spécifier que les noms de fichiers de cette liste doivent se terminer par NUL. Donc, si vous avez des noms de fichiers contenant des retours à la ligne (ce qui est autorisé), cela se cassera.
Une meilleure option consiste à utiliser cpio
pour générer les fichiers car elle accepte une liste de noms de fichiers terminée par NUL et peut générer des fichiers tar.
Si votre tar
commande serait:
tar cvf /somedir/all.tar .
Ensuite, pour que cela soit trié par nom, vous devez faire (en supposant que GNU find et cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Cela présente cependant l'inconvénient que les sous-répertoires sont placés entre les noms de fichiers. Vous pouvez effectuer des astuces avec find
s -printf0 en spécifiant le répertoire et les informations détaillées et le tri avec sort -n
mais cela influence également la façon dont les fichiers avec des numéros sont triés dans un répertoire.
Si ce qui précède n'est pas satisfaisant, vous pourriez probablement utiliser un petit programme python basé sur os.walk()
pour générer l'ordre que vous souhaitez avec un contrôle total (profondeur d'abord, basé sur l'extension, etc.), mais si vous suivez cette voie, vous pouvez aussi bien laisser tomber cpio
et écrire le tar
fichier avec le tarfile
module de python .