Je crée un fichier tar en exécutant le script. Le script est dans le dossier A. Je veux ajouter le fichier à tar. Le fichier d'entrée et le fichier tar se trouvent tous deux dans le dossier B. Lorsque j'ajoute un fichier à un fichier tar existant, je donne le chemin d'accès absolu au fichier tel qu'il se trouve dans un autre dossier. Lorsqu'il doit être ajouté à tar, il doit être renommé sous le nom de mon choix.
Exemple:
/root/test/A
/root/myFolder/B/foo
/root/myFolder/B/archive.tar
Lors de l'ajout de /root/myFolder/B/foo
à archive.tar
, il devrait être renommé en bar
.
J'essaie cette commande mais sans succès:
tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
Il ajoute un fichier tel quel avec le même nom /root/myFolder/B/foo
.
La cause est tar
en supprimant automatiquement les /
principaux:
tar: Suppression du `/ 'du premier nom des membres
Il semble qu'il soit supprimé avant l'exécution de regex. Vous devez donc également supprimer le /
initial du modèle:
tar --transform='flags=r;s|root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
ou utilisez le commutateur -P
-P, --absolute-names
don't strip leading '/'s from file names
Sinon, vous pouvez basculer vers le dossier de fichiers avec -C
, vous n'avez pas besoin de remplacer le chemin:
tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo