Saya mencari perintah terminal untuk menghitung jumlah item tingkat atas dalam arsip ZIP. Saya tahu itu zip -l archive.zip
akan menunjukkan jumlah file, tetapi ini menunjukkan semua file, bukan hanya item tingkat atas. Jika archive.zip
akan unzip ke berikut ini (* menunjukkan tingkat atas)
* Dir1
File1
File2
* Dir2
File3
File4
File5
File6
* Dir3
* File7
* File8
maka saya ingin program untuk keluaran 5
.
unzip -l archive.zip|grep /|grep -v "/.*/"|wc -l
. Filter pertama hanya menampilkan baris dengan file, yang kedua menghilangkan subdirektori dan yang ketiga mengembalikan jumlah baris. Jika arsip memiliki jalur absolut, Anda harus mengizinkan dua garis miring dan menghilangkan tiga atau lebih.unzip -l archive.zip | grep -v / | wc -l
, kan? Maaf postingan asli saya tidak jelas|wc -l
Anda akan melihat file dipertimbangkan, dan itu yang tingkat atas. Ada bug (!): Jika jalur arsip berisi satu/
ini akan dihitung, jadi Anda perlu filter tambahan untuk mengecualikannya, misalnya gantigrep /
dengangrep "^ .*/"
.Jawaban:
Mengambil inspirasi dari AFH untuk menggunakan solusi ini
Apa fungsinya:
sumber