Sıkıştırılmış komut nasıl geri alınır?


19

Ben bir zip dosyası ayıklamak için "unzip XXX.zip" kullandım, ne yazık ki, bir hata yapmak.

Şimdi "unzip" tarafından oluşturulan tüm dosya ve directorys silmek istiyorum.
Nasıl geri alabilirim?

Yanıtlar:


29

bunu kullan:

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

Şüpheliyseniz bunu kullanın (onay isteyecektir)

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

Herhangi bir dosya adlarında boşluk varsa başarısız olur ... (şimdi -idüzenleme ile +1 . :)
sarnold

Sorun awk '{print $4}'- boşluklu bir dosya adı olabilir $4 $5 $6 .... :)
sarnold

1
Tamam. Bunu da düzelttim.
Abhijeet Rastogi

5
FTR bu da orijinal zip dosyasını siler
sjr

unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
Yolum

5

Zor bir yerdesiniz; standart zipinfo(1)yardımcı program, açık dosya adlarını arşivden çıkarmak için herhangi bir mekanizma sağlamaz. Ancak , yaklaşabilirsiniz:

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

Hiçbir dosyada yeni satır bulunmadığından eminseniz (kesinlikle yorucu olacak) -iseçeneğini kaldırabilirsiniz rm(1).


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

Çünkü iş yapar -Zçağırır zipinfoyarar ve -1seçenek sadece dosya yazdırmak için söyler

Bununla ilgili daha fazla ayrıntıyı komutlar man unzipve man 1 zipinfokomutlar aracılığıyla bulabilirsiniz.


1

Öncelikle bir klasör oluşturmadan yanlışlıkla açtıktan sonra dizininizi temizlemek isterseniz, klasörü oluşturabilir, bu dosyayı açıp ardından:

rm -r ` ls folder `

"" "komutları zincirlemek için çok kullanışlıdır, ancak çok değişmezdir.

Yorumlar bu yanıtı geliştirdi, eğer gizli dosyaları da kaldırdığınızdan emin olmak istiyorsanız (büyük olasılıkla yaptığınız), bunu yapın

rm -r ` ls -A folder `

yanlış sözdizimine koştuğun için özür dilerim, oy kaldırılabilir mi?
chrispepper1989

1
Zip herhangi bir dosyanın üzerine yazmayı reddederse, orijinaller silinir. Herhangi bir gizli dosya sıkıştırılmışsa, kaldırılmaz (kullanmazsanız ls -a).
gmarmstrong

1
Ya da, ls -Alisteleme hatalarından kaçınmak .ve..
gmarmstrong

0

Nautilus'ta (komut satırı olmadan) bunu yapmak için, dosyaları yanlışlıkla çıkardığınız yere gidebilir, "Değiştirildi" sekmesini tıklayarak dosyaları sıralayabilir, ardından tam olarak zamanınızla etiketlenmiş tüm dosyaları seçip silebilirsiniz. unzip komutunu çalıştırdı.


1
Lütfen soruyu tekrar dikkatlice okuyun. Yanıtınız yok değil orijinal soruya cevap. Maalesef Linux, Windows Gezgini içermez.
DavidPostill

Ah, evet! Unzip'in şimdiye kadar bir windows terminal komutu olmadığı aklıma gelmemişti. Teşekkürler! Nautilus'un benzer bir işlevselliğe sahip olup olmadığını kontrol edip yanıtı düzenleyeceğim. Aksi takdirde, sadece kaldıracağım.
cameronroytaylor

-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}

2
Bu soruya cevap verebilir, ancak neden böyle yaptığını açıklayabilirseniz daha iyi bir cevap olacaktır .
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.