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?

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 {} 

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).


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


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 `

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.


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 {}

2
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan penjelasan mengapa itu bisa terjadi.
DavidPostill
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.