2009-12-02 10 views
0

J'extraire un fichier tar dans un script shell et il est crée un dossier avec un nom comme:Comment lire un nom de répertoire dans un script bash

SupportSuite-5-20-3/

La partie "supports" du nom est toujours la même, mais je ne sais pas quels sont les caractères restants à l'avance. Je décompresse le fichier tar dans un script et j'ai besoin du nom du dossier résultant dans ce script. Quelle est la meilleure façon de mettre ce nom de répertoire dans une variable shell dans le script après que le tar a été extrait? Je suis un script contesté, donc merci d'avance pour toute aide que vous pouvez fournir.

Répondre

0

Si vous êtes en supposant que tous les fichiers du fichier tar sont dans le même répertoire, vous pouvez faire quelque chose comme:

DIRNAME=$(tar -tvf $TARFILE | head -1 | sed -e 's:^.* \([^/]*\)/.*$:\1:') 

Notez qu'il se conduisent mal probablement si vos noms ont des espaces en eux. Si cela vous intéresse, vous devrez ajuster la regex dans la commande sed.

0

Cela le décompressera et gardera le nom du dossier intact.

find . -type f -name "*.tar" -exec tar -xv '{}' \; 
0

Il est un peu un hack, mais cela pourrait aider (écrit pour bash:

tar zxf supportsuite-5-20-3.tgz 
NEWDIR=$(cd supportsuite-* && pwd) 
+0

pourrait le faire NEWDIR = « supportsuite- * » Bien que les deux approches suppose Theres un et un seul répertoire commençant par SupportSuite - dans le répertoire courant. – nos

Questions connexes