← retour aux snippets

tar --transform: renommer des chemins à l'extraction

Réécrire les noms de fichiers avec sed-regex lors de la création ou de l'extraction d'une archive.

bash filesystem #tar#transform#rename

objectif

Adapter l’arborescence sans copier/extracter puis renommer à la main.

code minimal

# prefixer par app/ en extraction
tar -xf site.tar.gz --transform='s#^#app/#'

utilisation

# supprimer le premier dossier (équivalent strip-components=1) via transform
tar -xf site.tar.gz --transform='s#^[^/]*/##'

# renommer .txt en .md à la volée
tar -cf docs.tar --transform='s#\.txt$#.md#' docs/

variante(s) utile(s)

# multiple transformations (GNU tar: appliquer dans l'ordre)
tar -xf site.tar.gz --transform='flags=r;s#^dist/#app/#' --transform='s#\.min\.js$#.js#'

notes

  • la syntaxe utilise des regex sed; échappez les / avec # comme délimiteur.
  • portable surtout avec GNU tar.