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.
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.
o zipli dosyaları da sorgusuz sualsiz sileyim gözüm bir daha görmesin diyorsanız , işte huzurlarınızda:
YanıtlaSil$ rm *.zip -f
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:
YanıtlaSil$ 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.
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.
YanıtlaSilBu 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 :)
RAR için:
YanıtlaSills *.rar *.RAR|while read line;do unrar e $line; done