Fakta asyik: Jika Anda menggunakan Archive Manager dan mengekstrak .tar.gz sehingga Anda memiliki "Menjaga struktur direktori" tidak terpelihara, Anda akan mendapatkan tarbomb .
tar -ztf
daftar semua file dan direktori dalam file tar. Apakah ada cara untuk mendaftar semua file dalam file tar, tanpa struktur direktori?
tar xvzf my_tar.tar.gz --transform 's/.*\///'
. Namun sayangnya itu tidak mengubah tampilannya di daftar dengant
daripadax
.Jawaban:
Saya tidak melihat cara untuk melakukannya dari halaman manual, tetapi Anda selalu dapat memfilter hasilnya. Berikut ini tidak ada baris baru dalam nama file Anda:
Bagaimana itu bekerja
Dengan mengatur pemisah bidang ke
/
, bidang terakhirawk
tahu tentang ($NF
) adalah nama file apakah itu memproses nama file atau kosong jika itu memproses nama direktori (tar
menambahkan garis miring ke nama direktori). Jadi, pada dasarnya kami memintaawk
untuk mencetak bidang terakhir jika tidak kosong.sumber
Memanfaatkan Joseph R. satu saran dapat menggunakan regex
[^/]$
untukgrep
untuk file dengan mencari garis tidak berakhir dengan/
.tar tzf archive.tar.gz | grep -e "[^/]$"
sumber
foo/bar
sebagai lawan dari adilbar
. Anda maugrep -Eo '[^/]+$'
(dengan GNU grep).Dengan asumsi tidak ada nama file yang mengandung baris baru:
Perintah sed pertama menghapus semuanya sebelum yang terakhir
/
pada satu baris, sehingga hanya bagian nama file yang dicetak. Perintah kedua menghapus baris yang sekarang kosong, yaitu baris yang diakhiri dengan/
, yang merupakan direktori.sumber
Dengan
pax
(perintah POSIX untuk membacatar
file):(yang mencantumkan semua file terlepas dari jenisnya, termasuk direktori).
sumber