Több fájl kitömörítése egyszerre Linuxon

Adott egy mappában sok tömörített fájl (pl. rar vagy zip), melyet jó lenne lehetőség szerint egy paranccsal kicsomagolni.

Szerencsére könnyen meg lehet ezt oldani egy bash ciklussal. (A leírás célja, hogy bemutassam a BASH for ciklusát egy működő példával)

Az ilyen egyszerű ciklusokra egyszerűen használható a for ciklus.

Nézzük milyen a “formulája”:

for [var] in [ertek]
do
   parancs $[var];
done

Az első sorban megadott [var] változó a folyamatosan (egymás után, amíg el nem fogynak) felveszi a [ertek] helyén szereplő dolgot. Majd ezután a ciklusban a harmadik sorban végrehajtódik egy parancs, melynke paraméterül a [var] értéket adtuk meg.

Nézzünk egy egyszerű példát, mely kiírja 1-5-ig a számokat:

for i in 1 2 3 4 5
do
echo $i
done

Az echo parancs kiírja, azt ami az i változóban van, egészen addig amíg el nem fogy.

Írhatjuk a parancsot akár egy sorba is:

for i in 1 2 3 4 5; do echo $i; done

Nem csak előre megadott értékeket használhatunk, hanem akár egy parancs kimenetét is.

Nézzük meg 1-10-ig a számokat.

for (( i=0 ; $i<10 ; i=$i+1 ))
do
echo $i
done

Az i kezdetben 0, majd mindig hozzáadódik 1 (i=$i+1), egészen addig míg el nem éri a 10-et ($i<10)

for i in $( ls )
do
echo Fájl: $i
done

A fenti ciklus a $( ls )-ben lévő parancsot végrehajtja, majd annak az eredményét helyettesíti be. Jelen esetben egy fájllistát kapunk.

Nézzük akkor, hogyan tudunk tömörített fájlokat kicsomagolni.

Először keressük meg az rar kiterjesztésű fájlokat, majd azokat rakjuk egy kitomorit nevű változóba

for kitomorit in *.rar

Majd adjuk át ezt paraméterként az unrarnak (az e jelenti, hogy kicsomagolás)

unrar e "$kitomorit"

Egybe a parancs:

for kitomorit in *.rar
do
unrar e "$kitomorit"
done

Vagy egy sorban

for kitomorit in *.rar; do unrar e "$kitomorit"; done

Zip fájlok esetén (egy sorban):

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

Remélem ezzel a kis példával sikerült bemutatnom a bashban használható for ciklust.

8 hozzászólás


  1. unrar e *.rar
    Minek ezt tulbonyolitani..


  2. Sziasztok!

    Én a find-et szoktam használni erre. Első megkeresi második áthelyezi.

    find /könyvtárneve -name *.rar -execdir unrar x {} +
    find /könyvtárneve -name *.avi -exec mv {} /könyvtárneveahovaakarod \;

    mais


  3. mais: El se olvastad, csak a címet, mi?

    (A leírás célja, hogy bemutassam a BASH for ciklusát egy működő példával)


  4. charlie: a cikk címe “Több fájl kitömörítése egyszerre Linuxon”
    gondoltam ez is segíthet, aki több filet akar kicsomagolni és nincs kedve evvel sok időt eltölteni.
    Bocsánat érte!


  5. Nos én viszont elolvastam. Nekem eleve ott kezdődik, hogy most még alapból nem értem, hogy például egy lementett trgz-be csomagolt fájlt, hogyan is lehet feltelepíteni? Igaz nem túl régen használom az Ubuntut és van még mit tanulnom. A winen ugye egy duplakatt az exe fáljra és ment. Itt azért ez egészen más és még nem tanultam meg.


  6. csavi: Lesz majd arról is leírás, azonban az esetek nagy részében az átlag usernek nem kell forrásból telepíteni.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.