tar -tf filename.tar
folder1/file
folder1/name
[...]
Je voudrais extraire le fichier et le nom du dossier2 . Est-ce que cela peut être fait en une seule ligne?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Je voudrais extraire le fichier et le nom du dossier2 . Est-ce que cela peut être fait en une seule ligne?
Réponses:
Utilisez -C
et --strip-components
(Voir man tar
).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
L' -C
indicateur suppose qu'un répertoire est déjà en place afin que le contenu du fichier tar puisse y être développé. d'où le mkdir FOLDER
.
Le --strip-components
drapeau est utilisé lorsqu'un fichier tar se développerait naturellement dans un dossier, disons, comme github où il donne des exemples dans un repo-name-master
dossier. Bien sûr, vous n'auriez pas besoin du dossier de premier niveau généré ici, donc --strip-components
réglé sur 1
supprimerait automatiquement ce premier dossier pour vous. Plus le nombre est élevé, plus les dossiers imbriqués sont supprimés.
Vous pouvez également utiliser l' --transform
option pour un peu plus de flexibilité. Il accepte toute opération de remplacement de sed.
Par exemple, voici comment extraire une archive tar Linux dans un nouveau répertoire afin que je puisse appliquer un patch:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Je n'ai pas repéré--strip-components
. belle