Bagaimana cara "membatalkan" perintah unzip?

19

Saya menggunakan "unzip XXX.zip" untuk mengekstrak file zip, sayangnya, saya membuat kesalahan.

Sekarang saya ingin menghapus semua file dan direktori yang dihasilkan oleh "unzip".
Bagaimana saya bisa membatalkannya?

hero2008
sumber

Jawaban:

29

Gunakan ini:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

Gunakan ini jika Anda skeptis (akan meminta konfirmasi)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 
Abhijeet Rastogi
sumber
Gagal jika ada file yang memiliki spasi dalam namanya ... (+1 sekarang dengan hasil -iedit. :)
sarnold
Masalahnya ada di awk '{print $4}'- nama file dengan spasi mungkin di $4 $5 $6 .... :)
sarnold
1
Baik. Memperbaiki itu juga.
Abhijeet Rastogi
5
FTR ini juga menghapus file zip asli
sjr
Cara saya:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei
5

Anda berada di tempat yang sulit; zipinfo(1)utilitas standar tidak menyediakan mekanisme apa pun untuk mendapatkan nama file yang jelas dari arsip. Tapi , Anda bisa mendekati:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

Jika Anda yakin tidak ada file yang memiliki baris baru di dalamnya, Anda dapat menghapus -iopsi untuk rm(1)(yang pasti akan membosankan).

sarnold
sumber
4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

Apakah pekerjaan itu karena -Zmemanggil zipinfoutilitas dan -1opsi mengatakannya untuk hanya mencetak nama file

Anda dapat menemukan rincian lebih lanjut tentang ini melalui man unzipdan man 1 zipinfoperintah

Prathu Baronia
sumber
1

Jika Anda ingin membersihkan direktori setelah tidak sengaja membuka ritsleting tanpa membuat folder terlebih dahulu, Anda dapat membuat folder, unzip ke sana dan kemudian:

rm -r ` ls folder `

"` "sangat berguna untuk perintah chaining tetapi sangat literal.

Komentar telah meningkatkan jawaban ini, jika Anda ingin memastikan Anda juga menghapus file tersembunyi (yang mungkin Anda lakukan), lakukan ini

rm -r ` ls -A folder `
chrispepper1989
sumber
permintaan maaf karena bergegas ke sintaks yang salah, dapatkah pemungutan suara dihapus?
chrispepper1989
1
Jika zip menolak untuk menimpa file apa pun, maka dokumen asli akan dihapus. Jika ada file tersembunyi yang tidak di-zip, mereka tidak akan dihapus (kecuali jika Anda menggunakan ls -a).
gmarmstrong
1
Atau lebih tepatnya,, ls -Auntuk menghindari kesalahan dari daftar. dan..
gmarmstrong
0

Untuk melakukan ini di Nautilus (tanpa baris perintah), Anda bisa menavigasi ke tempat Anda secara tidak sengaja mengekstrak file, mengurutkan file dengan mengklik tab "Modifikasi", lalu pilih dan hapus semua file yang berlabel dengan waktu yang tepat Anda menjalankan perintah unzip.

cameronroytaylor
sumber
1
Silakan baca pertanyaan itu lagi dengan seksama. Jawaban Anda tidak menjawab pertanyaan awal. Sayangnya Linux tidak termasuk Windows Explorer.
DavidPostill
Ah, ya! Tidak terpikir oleh saya bahwa unzip bukanlah perintah terminal windows sampai sekarang. Terima kasih! Saya akan memeriksa untuk melihat apakah Nautilus memiliki fungsi serupa dan mengedit jawabannya. Kalau tidak, saya hanya akan menghapusnya.
cameronroytaylor
-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}
Igor Shcheglakov
sumber
2
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan penjelasan mengapa itu bisa terjadi.
DavidPostill