Question Tracez le segment de chemin lors de l'extraction à l'aide de 7zip?


Y a-t-il un moyen d'extraire une archive 7z contenant tous les fichiers dans un répertoire sans créer ce répertoire dans le système de fichiers tout en conservant la structure de sous-répertoire de l'archive ( 7z e ... ne fonctionne pas comme souhaité, car il dépouille toutes les informations de chemin d'accès)?

En goudron j'utiliserais tar -x --strip=1 ... pour supprimer le premier composant du chemin. Y at-il un équivalent pour 7z ou dois-je extraire avec le segment de chemin indésirable, déplacer le contenu au bon endroit et supprimer le répertoire?


5
2018-05-05 20:59


origine


En regardant les options de ligne de commande 7z, je ne suis pas possible en un coup. Probablement utiliser 7z x pour créer la structure, 7z e pour supprimer les informations de chemin, puis supprimer les fichiers créés par 7z x, essayé, ce n'est toujours pas ce que vous voulez. - Sathya♦
Bien que vous ne puissiez pas faire cela pendant que extraire, vous pouvez supprimer le dossier racine de l'archive lorsque compression. Au lieu de 7z a archive.7z path\to\folder faire 7z a archive.7z path\to\folder\* à dépouiller folder à partir du nom de chemin archivé. - jpaugh


Réponses:


Non, --trip-composants n'est pas supporté par 7-zip. Mais vous pouvez utiliser un script shell pour le faire:

#!/bin/sh

if [ $# -eq 1 ]; then
    inputfile="$1"
    outputfolder="."
elif [ $# -eq 2 ]; then
    inputfile="$1"
    outputfolder="$2"
    if [ ! -d "$outputfolder" ]; then
        mkdir "$outputfolder"
    fi
else
    exit
fi
7z x "$inputfile" -otempdir
folder=$(find tempdir -mindepth 1 -maxdepth 1 -type d | head -1)
find "$folder" -mindepth 1 -maxdepth 1 -exec mv -t"$outputfolder" -- {} +
rm -rf tempdir

Usage:

7zstrip.sh file.7z [folder]

Note: non testé.


0
2017-08-26 11:49