Ou utilisez --transform/ --xform, comme suggéré par Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st
Réponses:
6
Non.
name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"
(Remarque: cela ne fonctionne pas si votre shell a activé le suivi des liens symboliques du répertoire actuel et que le répertoire actuel est accessible via un lien symbolique.)
Oui, ce n'est pas ce que vous avez demandé, mais c'est ce que vous devez faire. Les archives qui développent un grand nombre de fichiers dans le répertoire actuel sont ennuyeuses: cela met la charge de créer un répertoire cible pour le fichier sur chaque personne qui décompresse l'archive, et si elles les décompressent accidentellement dans un répertoire non vide, il est difficile de nettoyer. La plupart du temps, une archive doit créer un répertoire de premier niveau unique dont le nom est le nom de base de l'archive.
Compris. Si je me souviens bien, c'est vraiment très ennuyeux d'avoir à faire une étape supplémentaire pour décompresser une archive dans un répertoire spécifique (par exemple tar xzvf archive.tar.gz && mv archive/* /outputvs unzip archive.zip -d /output)
Naftuli Kay
9
Le point apparaît car tarcrée la structure du chemin comme vous le donnez dans les arguments. Donc, comme vous l'avez donné . en tant que source, l'archive est également créée dans la même structure.
Vous pouvez essayer ceci et vérifier:
tar -czvf ../myarchive.tar.gz *
Mise à jour de la réponse avec l'aide du commentaire de n.st
--transform
/--xform
, comme suggéré par Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
Réponses:
Non.
(Remarque: cela ne fonctionne pas si votre shell a activé le suivi des liens symboliques du répertoire actuel et que le répertoire actuel est accessible via un lien symbolique.)
Oui, ce n'est pas ce que vous avez demandé, mais c'est ce que vous devez faire. Les archives qui développent un grand nombre de fichiers dans le répertoire actuel sont ennuyeuses: cela met la charge de créer un répertoire cible pour le fichier sur chaque personne qui décompresse l'archive, et si elles les décompressent accidentellement dans un répertoire non vide, il est difficile de nettoyer. La plupart du temps, une archive doit créer un répertoire de premier niveau unique dont le nom est le nom de base de l'archive.
la source
tar xzvf archive.tar.gz && mv archive/* /output
vsunzip archive.zip -d /output
)Le point apparaît car
tar
crée la structure du chemin comme vous le donnez dans les arguments. Donc, comme vous l'avez donné . en tant que source, l'archive est également créée dans la même structure.Vous pouvez essayer ceci et vérifier:
Mise à jour de la réponse avec l'aide du commentaire de n.st
la source
*
glob ne correspondra pas aux fichiers cachés.mieux vaut ajouter ^ avant le précédent.
OU, tous les "/" dans le chemin d'accès complet à l'intérieur de l'archive seront supprimés sauf si "/" est la fin du chemin d'accès complet.
la source