Na základě @ford
odpověď uživatele. Tento jej rozbalí do složky my_dirname. Abychom mohli řádně vymazat prázdné složky, aniž bychom ovlivnili aktuálně existující soubory.
tar xzf images.tgz --transform='s/.*\///' -C my_dirname
find my_dirname -type d -empty -delete
Toto je téměř možné pouze s tar, pomocí parametru --transform, kromě toho, že pokud vím, neexistuje způsob, jak odstranit zbývající adresáře.
Tím se celý archiv srovná:
tar xzf images.tgz --transform='s/.*\///'
Výstup bude
folder1/
folder2/
folder3/
img.gif
img2.gif
img3.gif
Adresáře pak budete muset bohužel smazat jiným příkazem.
Zkontrolujte verzi tar, např.
$ tar --version
Pokud je verze >= než tar-1.14.90 použijte --strip-components
tar xvzf web.dirs.tar.gz -C /srv/www --strip-components 2
jinak použijte --strip-path
tar xvzf web.dirs.tar.gz -C /srv/www --strip-path 2
Můžete použít --strip-components možnost dehtu.
--strip-components count (x mode only) Remove the specified number of leading path ele- ments. Pathnames with fewer elements will be silently skipped. Note that the pathname is edited after checking inclusion/exclu- sion patterns but before security checks.
Vytvořím soubor tar s podobnou strukturou jako vy:
$tar -tf tarfolder.tar
tarfolder/
tarfolder/file.a
tarfolder/file.b
$ls -la file.*
ls: file.*: No such file or directory
Poté extrahujte takto:
$tar -xf tarfolder.tar --strip-components 1
$ls -la file.*
-rw-r--r-- 1 ericgorr wheel 0 Jan 12 12:33 file.a
-rw-r--r-- 1 ericgorr wheel 0 Jan 12 12:33 file.b
Ladění v pyCharm s právy sudo?
Seznam blízkých/zjistitelných zařízení Bluetooth, včetně již spárovaných, v Pythonu na Linuxu