Sto cercando un comando terminale per contare il numero di elementi di livello superiore in un archivio ZIP. So che zip -l archive.zip
mostrerà il conteggio dei file, ma questo mostra tutti i file, non solo gli elementi di livello superiore. Se archive.zip
decomprimerà quanto segue (* indica il livello superiore)
* Dir1
File1
File2
* Dir2
File3
File4
File5
File6
* Dir3
* File7
* File8
quindi vorrei un programma in uscita 5
.
unzip -l archive.zip | grep -v / | wc -l
, giusto? Mi dispiace che il mio post originale non fosse chiaro
|wc -l
, vedrai i file considerati ed è quelli di livello superiore. C'è un bug (!): Se il percorso dell'archivio contiene un singolo, /
questo verrà conteggiato, quindi è necessario un filtro aggiuntivo per escluderlo, ad esempio sostituirlo grep /
con grep "^ .*/"
.
unzip -l archive.zip|grep /|grep -v "/.*/"|wc -l
. Il primo filtro mostra solo le righe con i file, il secondo elimina le sottodirectory e il terzo restituisce il conteggio delle righe. Se l'archivio ha percorsi assoluti, dovrai consentire due barre ed eliminarne tre o più.