![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
livinho38
listTarFile=$(tar -tvf monFicher.tar |awk '{print $3 " " $6}'
for elem in ${listTarFile}
do
...
done
le probleme c'est que ma variable $elem est égale :
au premier coup, a la taille du fichier
au deuxième cou au nom
au troisième cou à la taille
Salut
C'est normal puisque le "for" se cale sur l'espace pour détecter chaque élément. C'est fait pour gérer des éléments simples
et non des éléments complexe comme
for ligne in phrase 1 phrase 2 phrase 3
!!!
Pour y arriver, il te faut utiliser un outil qui sache ce qu'est une ligne. Et c'est quoi une ligne ? C'est des caractères terminés par <return>. Et quel outil se cale sur le <return> pour travailler ? Le read
1 2 3 4
| tar -tvf monFicher.tar |awk '{print $3 " " $6}' |while read elem
do
...
done |
Et tu peux même récupérer directement tes éléments distincts
1 2 3 4
| tar -tvf monFicher.tar |awk '{print $3 " " $6}' |while read nom taille
do
...
done |
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
livinho38
je dispose d'un fichier TAR qui va être détarré dans le répertoire ou il se trouve.
Absolument pas.
Ca ne dépend que
1) de la façon dont ont été stockés les fichiers lors de la création du tar (nom relatif/nom absolu)
2) de l'endroit où toi tu te trouves quand tu lances le détarrage
et absolument pas de l'endroit où se trouve le fichier tar.
Si celui qui a créé le tar a archivé "/home/machin", alors le fichier tar peut se trouver dans /tmp, les fichiers seront détarrés dans /home/machin.
Inversement, si celui qui a créé le tar a archivé "../truc", ben même si le fichier tar se trouve dans /tmp mais que toi tu te trouves dans /home/machin quand tu lances le détarrage, alors les fichiers seront détarrés dans /home/machin/../truc (autrement dit /home/truc)...
Cela peut être dangereux c'est pourquoi les tar modernes enlèvent le "/" lors de l'archivage mais tous les tar ne sont pas forcément modernes...
Partager