Di baris perintah bash saya, ketika saya menggunakan unzip -l test.zip
saya mendapatkan output seperti ini:
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
810000 05-07-2014 15:09 file1.txt
810000 05-07-2014 15:09 file2.txt
810000 05-07-2014 15:09 file3.txt
--------- -------
2430000 3 files
Tapi saya hanya tertarik dengan baris yang berisi detail file.
Saya mencoba membuat pemfilteran menggunakan grep seperti ini:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Tetapi panjang dan rentan terhadap kesalahan (mis. Arsip nama file dalam daftar ini akan dihapus)
Apakah ada opsi lain dengan unzip -l (saya memeriksa halaman manual unzip dan tidak menemukan) atau alat lain untuk melakukannya?
Penting bagi saya untuk tidak benar-benar membuka ritsleting arsip tetapi hanya untuk melihat file apa yang ada di dalamnya.
command-line
filenames
zip
рüффп
sumber
sumber
grep
dapat di-refactored menjadi skrip Awk, biasanya dengan presisi yang jauh lebih baik.awk 'NR >3 { if (/^ *---/) exit 0; print }'
akan memangkas tiga baris pertama serta footer, dan juga dapat dengan mudah mengekstraksi hanya nama file (petunjuk:)print substr($0, 29)
.Jawaban:
Atau:
Akan mencantumkan hanya file.
Jika Anda masih menginginkan info tambahan untuk setiap nama file, Anda dapat melakukan:
Atau:
Atau (dengan asumsi GNU
head
):sumber
unzip -Z1 zipfile.zip
akan menampilkan: direktori / dan direktori / file.extension (Catatan: kemungkinan nama direktori dengan., sehingga menambahkan| grep .
tidak berfungsi)