unzip
memiliki opsi yang bagus -j
, di mana struktur direktori arsip dibuang, dan semua file diekstraksi ke direktori yang sama.
Apakah ada cara untuk membuat tar
pekerjaan dengan cara yang sama? Tidak ada di halaman manual yang menunjukkan demikian.
Jadi, apakah ada alat alternatif, lebih disukai Perangkat Lunak Bebas, yang akan melakukan itu?
Jawaban:
GNU tar hidup dengan featureitis, jadi tentu saja ada beberapa opsi untuk itu.
http://www.gnu.org/software/tar/manual/html_node/transform.html
Jika Anda hanya ingin menghapus beberapa segmen jalur, maka
--strip-components=n
atau--strip=n
akan sering dilakukan:Tetapi juga dimungkinkan untuk regex-menulis ulang file yang akan diekstraksi (flag adalah
--transform
atau--xform
dan menerima kesalahan dengan/x
modifer):Untuk mendaftarkan tar, Anda memerlukan
--show-transformed
opsi tambahan :Saya percaya opsi penulisan ulang juga berfungsi untuk pengemasan, bukan hanya untuk mengekstraksi. Tetapi
pax
jelas sintaksisnya lebih bagus.sumber
s#.*/##
?--strip
tidak disebutkan di halaman manual os x tar, tetapi tetap berfungsi, terima kasih!--strip
dan--strip-components
?Anda dapat melakukannya dengan cukup mudah dalam dua langkah. Beradaptasi seperlunya:
sumber
find -exec mv -i
alih-alihfind | xargs
) .... langkah-langkah sederhana yang dapat saya ulangi pada sistem apa pun tanpa harus membawa skrip untuk melakukannya untuk saya.tmpdir=$( mktemp -d )
berguna saat membuat direktori sementarapax
dapat melakukannya:atau
Anda dapat memeriksa operasi penggantian nama terlebih dahulu dengan menghilangkan
-r
opsi.sumber
Solusi yang mungkin yang tidak memerlukan instalasi apa pun.
tar tvf
untuk mengambil semua file dari tarballEkstrak file-file tersebut satu per satu - miliki ekstrak tar untuk stdout & redirect ke $ filename
simpan sebagai extract.sh dan jalankan sebagai
extract.sh myfile.tar
. Itu juga akan menimpa nama file duplikat yang ditemui di direktori yang ditarik dari tarball.sumber
The
-O
pilihan ekstrak file untuk keluar standar, dan>
pengalihan bahwa output ke dalam file. Jadi dalam contoh saya, saya mengekstrak foo.mp3 dan mengalihkannya ke bar.mp3. Nama file sewenang-wenang.sumber