unzip
a une option astucieuse -j
, par laquelle la structure de répertoire de l’archive est ignorée et tous les fichiers sont extraits dans le même répertoire.
Y a-t-il un moyen de faire le tar
travail de la même manière? Rien dans la page de manuel ne semble l'indiquer.
Donc, existe-t-il un outil alternatif, de préférence logiciel libre, pour le faire?
Réponses:
Le goudron GNU vit sur les caractéristiques, il existe donc naturellement des options pour cela.
http://www.gnu.org/software/tar/manual/html_node/transform.html
Si vous souhaitez simplement supprimer quelques segments de chemin, faites
--strip-components=n
ou--strip=n
faites souvent:Mais il est également possible de réécrire de manière régulière les fichiers à extraire (les indicateurs sont
--transform
ou--xform
et acceptent ereg avec le/x
modificateur):Pour lister un tar, vous avez besoin de l'
--show-transformed
option supplémentaire :Je crois que les options de réécriture fonctionnent également pour l’emballage, pas seulement pour l’extraction. Mais
pax
a évidemment une syntaxe plus agréable.la source
s#.*/##
?--strip
non mentionné dans la page de manuel os x tar, mais cela fonctionne quand même, merci!--strip
et--strip-components
?Vous pouvez le faire assez facilement en deux étapes. Adapter si nécessaire:
la source
find -exec mv -i
au lieu defind | xargs
) .... des étapes simples que je peux répéter sur n’importe quel système sans avoir à transporter de script pour le faire à ma place.tmpdir=$( mktemp -d )
est pratique lors de la création de répertoires temporairespax
peut le faire:ou
Vous pouvez d'abord vérifier l'opération de remplacement de nom en omettant l'
-r
option.la source
Une solution possible qui ne nécessite aucune installation.
tar tvf
pour récupérer tous les fichiers de l'archiveExtrayez ces fichiers individuellement - extrayez tar à stdout et redirigez-le à $ filename
enregistrer sous extract.sh et exécuter en tant que
extract.sh myfile.tar
. Il écrasera également les noms de fichiers en double rencontrés dans les répertoires extraits de l'archive.la source
L'
-O
option extrait un fichier à la sortie standard et>
redirige cette sortie dans un fichier. Donc, dans mon exemple, j'extrais foo.mp3 et le redirigeais dans bar.mp3. Les noms de fichiers sont arbitraires.la source