Si une archive contient plusieurs fichiers dans le répertoire racine, je voudrais créer un répertoire nommé d'après le nom du fichier (sans extension). Si une archive ne contient qu'un répertoire, je voudrais simplement l'extraire. Supposons que j'ai les archives suivantes:
# file: withdir.zip
somedir/alpha
somedir/beta
somedir/gamma
Si je l'extrait dans le répertoire courant, j'aimerais qu'il soit simplement extrait ( unzip withdir.zip
):
somedir/alpha
somedir/beta
somedir/gamma
Supposons maintenant l'archive suivante:
# file: nodir.zip
alpha
beta
gamma
Lorsque je cours, unzip nodir.zip
je finis par encombrer le répertoire actuel avec les trois fichiers:
alpha
beta
gamma
Je préfère courir unzip -d nodir nodir.zip
:
nodir/alpha
nodir/beta
nodir/gamma
Si j'utilise nautilus et clique droit sur "Extraire ici". Il se comporte exactement comme il se doit. Mais malheureusement, je n'ai pas trouvé de commutateur de ligne de commande pour unzip
ou
7z
qui donne le même comportement. Comment y parvenir? Y a-t-il d'autres outils que je peux utiliser à la place (pas d'interface graphique)?
withdir
pour l'archivewithdir.zip
bien qu'il ne contienne qu'un seul répertoire à la racine cargrep -c "Folder = -"
retourne3
.patool gère différents types d'archives et crée un sous-répertoire au cas où l'archive contient plusieurs fichiers pour éviter d'encombrer le répertoire de travail avec les fichiers extraits.
Créer une archive
Extraire l'archive
Pour obtenir une liste des formats pris en charge, utilisez
patool formats
.la source
Vous pouvez également utiliser unar , qui crée un répertoire conteneur par défaut lorsqu'il existe deux fichiers de niveau supérieur ou plus:
Ajouter
-d
pour toujours créer un répertoire conteneur.la source