Birden fazla ZIP dosyasını açmak

$ for i in *.zip; do unzip $i; done

eğer zip uzantılı dosyaların isminde boşluk karakteri varsa:

$ for i in *.zip; do unzip "$i"; done


kaynak: wiki.linux-sevenler

Bu komutu arayacaktım internette, şans yüzüme güldü, kendiliğinden karşıma çıktı.


Diyelim bir dizin altında 147 tane zip olarak sıkıştırılmış dosyanız var, yukarıdaki sihirli kodlar vasıtasıyla hepsini tek bir hamlede açabilirsiniz.

Nedendir bilmiyorum ama pencere yöneticisinde zipli dosyaların hepsini seçerek (bir kaç tane de sorun olmuyor 100 gibi rakamlar da), ikincil fare tuşuyla tıklayarak ark programı ile buraya aç dediğimizde hepsini aynı anda açmaya çalışıyor ve birini bile açamadan kapanıyor, kesin bir yerde ayarı vardır ama şimdilik sihirli kodlar işimi görür.

Yorumlar

  1. o zipli dosyaları da sorgusuz sualsiz sileyim gözüm bir daha görmesin diyorsanız , işte huzurlarınızda:

    $ rm *.zip -f

    YanıtlaSil
  2. alışkanlık işleri çoğu zaman değiştir. necati demir üstadımdan bana geçen bir alışkanlık, pipe kullanmanın her zaman iyi olduğunu söyler. yanisi, bu işi şu komutla da yapabiliriz:

    $ ls *zip|while read line;do unzip $line; done

    bunun nasıl bir getirisi olur? eğer tüm zip dosyalarını açacaksak hiç. ama şöyle düşünebiliriz, önce açmak istediğimiz zip dosyalarına bakarız:

    $ ls *zip

    ki içimiz rahat etsin. aralarda atlamak istediğimiz bir iki dosya çıkabilir, o zaman da bu while döngüsü işimizi kolaylaştırır. şu şekilde:

    $ ls *zip|grep -v acilmasiistenmeyendosya1|grep -v acilmasiistenmeyendosya2|while read line;do unzip $line; done

    üstelik grep'le dosya adının tamamını da girmek zorunda değiliz. mesela aynı klasörde 100 tane 2007xxx.zip, 2008xxx.zip, 100 tane de 2009xxx.zip var. sadece 2009'ları açmak için yapılması gerekenler çeşitli, ama bunu 2009*.zip olarak burada bahsi geçen tüm komutlara uygulayabiliriz. ama eğer istediğimiz sadece 2007'leri açmamak olsaydı, ben bunu şu şekilde yapardım:

    $ ls *zip|grep -v 2007|while read line;do unzip $line; done

    tabii ki bunu yine for ile de yapabiliriz:

    $ for i in 2008*.zip 2009.zip;do unzip $i; done

    fakat burada iki ayrı tarih olduğu için böyle kolay uygulayabildik. eğer daha çok olsaydı (mesela 1990'dan 2009'a kadar ve sadece 2007'leri açmayıp diğer hepsini açmak istiyor olsaydık) hepsini tek tek yazmamız gerekirdi.

    elbette başka yöntemler de olabilir, fakat benim aklıma bunlar geldi şimdilik.

    YanıtlaSil
  3. Detaylı alternatif yöntem(ler) ve farklı senaryo örnekleri için teşekkürler, bir daha ki çoklu arşiv karşılaşmasında bahsettiğiniz yöntemi deneyeceğim.

    Bu yazıyı yazmadan önce oldukça çok sayıda (147) arşiv dosyasını tek tek açmıştım o yüzden sihirli kodlar demiştim kullandığım komutlara, bu da öyle bir anımdı işte :)

    YanıtlaSil
  4. RAR için:
    ls *.rar *.RAR|while read line;do unrar e $line; done

    YanıtlaSil

Yorum Gönder

sen de yaz yaz yaz buraya yaz bütün sözlerini

Bu blogdaki popüler yayınlar

Diğer Dillerde Hoşçakal

Mızıka Tabları Nasıl Okunur

conio.h