Visszatérő témáink egyike, hogy miként lehet a parancssori alkalmazásokat a lehető legegyszerűbben és leghatékonyabban alkalmazni a napi munka során. Mert bár a PowerShellben és a Terminalban nem kapunk ízléses és kényelmes grafikus felületet az egyes alkalmazásokhoz – sőt, a legtöbbhöz semmiféle felület sincs, csak manuálisan megadott paraméterekkel kiegészített utasításokként használhatók -, cserébe viszont egy halom feladatot gyorsabban és a gépet kevésbé terhelve végezhetnek ez nekünk. Mivel visszatérő témakör a Terminal használata, ha valakit érdekelnek a különlegesebb parancssori alkalmazások Windowsra és macOS-re egyaránt, ide kattintva körbenézhet korábbi cikkeink között. Sőt, nemrég összes is szedtük a legjobb parancssori alkalmazásokat, amelyek mindkét rendszerhez használhatók (megoldást kínálnak videók és képek konvertálására, átalakítására, online videók letöltésére és lejátszására, s még számtalan más feladatra). Ma viszont kifejezetten macOS-re válogattuk össze, hogy melyek azok a hasznos Terminal parancsok napi rutinfeladatokhoz, amelyek egyszerűbbé tehetik a munkát a fájlokkal.
Hasznos Terminal parancsok napi rutinfeladatokhoz Macre
Bár macOS alatt a Finder viszonylag kényelmesnek mondható, ha több tucat vagy több száz fájllal kell ugyanazt a műveletet elvégezni, sokszor gyorsabb egy Terminal parancs kiadása. Egy jól megírt utasítás néhány másodperc alatt képes fájlokat átnevezni, törölni, konvertálni, átméretezni, rendezni vagy listázni, természetesen akár csoportosan is.
Mára olyan gyakorlati Terminal-parancsokat gyűjtünk össze, amelyek kvázi sablonként használhatók. Az itt felvonultatott parancsok esetében a legtöbb esetben csak a mappa elérési útját, a fájlnévre vonatkozó részt vagy épp a kiterjesztést kell lecserélni, hogy ugyanazokat a feladatokat, amelyek a példában szerepelnek, elvégezhessük a saját gépünkön, a saját állományainkon.
Fontos: törlés vagy tömeges átnevezés előtt érdemes először egy tesztmappán és tesztelésre szolgáló fájlokkal kipróbálni a parancsokat. Ez a művelet ugyanis nem rizikómentes, ha valamit elírunk, könnyen törölhetünk fontos állományokat a gépről, ráadásul például az rm paranccsal törölt fájlok nem feltétlenül kerülnek a Lomtárba, így örökre elveszíthetjük azokat.
Adott szöveget tartalmazó fájlnevek törlése egy mappában és almappáiban
Tételezzük fel, hogy egy mappában és annak almappáiban minden olyan fájlt ki szeretnénk törölni, amelynek a nevében szerepel a _scaled kifejezés. Például átméretezés után meggondoltuk magunkat és törölnénk minden átméretezett fájlt.
Természetesen a szituáció lehet teljesen eltérő is, lényeg, hogy a törlendő fájlok nevében vagy kiterjesztésében szerepeljen egy azonos kifejezés, amelyre hivatkozhatunk. Ebben az esetben az alábbi utasítás sablonnal pillanatok alatt megtehetjük ezt. Persze átírva mindent benne, amit szükséges:
find "/elérési/út/a/mappához" -type f -name "*_scaled*" -delete
Ezt kell átírni:
"/elérési/út/a/mappához"
valamint ezt (a * jelzi, hogy a kifejezés előtt és után bármilyen szöveg állhat a fájlnévben, vagyis a lényeg az, hogy a *_scaled* szerepeljen benne mindenképpen, hogy töröljük az adott fájlt):
*_scaled*
Példa:
find "/Downloads/kepek" -type f -name "*_scaled*" -delete
Biztonságos ellenőrzés törlés előtt, ami csak kislistázza a fájlokat, így ellenőrizhetjük, hogy a megoldás valóban jól működik-e majd a beazonosításokhoz:
find "/Downloads/kepek" -type f -name "*_scaled*"
Fájlok csoportos átnevezése sorszámozással
Bár erre a feladatra a Finder is kínál saját megoldás a menüjében (jelöljük ki a fájlokat, majd jobb klikk az egyikre, válasszuk a Rename… menüpontot, azon belül pedig a Format lehetőséget, ahol megadhatjuk, milyen felépítésben történjen meg az átnevezés), sok esetben a Terminalban testreszabhatóbb módon lehet ezt is elvégezni. Ahhoz, hogy egy halom összevissza nevű képfájlból rendezett, mondjuk kep-001.jpg, kep-002.jpg, kep-003.jpg nevű fájl legyen, az alábbiakat kell tennünk.
Lépjünk be a képeket tartalmazó mappába az alábbi utasítással (természetesen az elérési utat módosítani kell a kívántra):
cd "/elérési/út/a/mappához"
Másoljuk be ezt az utasítást így, több sorosan a Terminalba (de amit kell, írjunk át benne, lásd az utasítás alatti példákat):
n=1
for file in *.png; do
mv "$file" "$(printf "kep-%03d.png" "$n")"
n=$((n+1))
done
Ezt kell átírni:
*.png – vagyis az átnevezendő fájlok kiterjesztését, de természetesen itt is megadhatunk kifejezéseket a nevekben, ha van amire tudunk hivatkozni, például a *_scaled.png kifejezéssel az összes olyan png fájl átnevezésre kerül, amelynek a neve végén szerepel a _scaled kifejezés a kiterjesztés előtt.
Illetve át kell írni azt is, mi legyen a nevük az átnevezett fájloknak. A példában kep-%03d.png, ami annyit tesz, hogy kep-001.png, kep-002.png stb. lesz a nevűk.
Fájlnevek kisbetűssé alakítása
Ha egy mappában vegyesen vannak nagy- és kisbetűs fájlnevek, ezzel egységesíthetők. Elsőként lépjünk be a mappába a cd "/elérési/út/a/mappához" utasítással, lecserélve persze itt is a valódi útvonal nevére az utasítás második felét. Ezután használjuk ezt az utasítást:
for f in *; do
low=$(echo "$f" | tr '[:upper:]' '[:lower:]')
if [ "$f" != "$low" ]; then
mv "$f" "${f}_tmp" && mv "${f}_tmp" "$low"
fi
done
Mire jó ez? Például webre feltöltött képeknél hasznos, ahol jobb elkerülni az olyan fájlneveket, mint a NyitoKep.JPG, a LOGO.PNG, vagy a CikkKep-01.Jpeg. Kulturáltabb, ha minden kisbetűs. Mellesleg ha csupa nagy betűs fájlnevekre van szükségünk, elég felcserélni a több soros utasításban a '[:upper:]' '[:lower:]' részt erre: '[:lower:]' '[:upper:]' .
Szóközök lecserélése kötőjelre fájlnevekben
Ha webre töltünk fel fájlokat – például képeket -, a szóköz, bár nem mindig halálos hiba, de a legtöbb esetben galibát okozhat. Szóval sokkal jobban járunk, ha a fájlnévben a szóközöket lecseréljük mondjuk kötőjelre (-). Na de több tucat képnél, amelyek neve több szóból áll? Na, azt utálatos dolog. Helyette viszont használhatjuk ezt a Terminal utasítást, miután beléptünk a fájlokat tartalmazó mappába a szokásos és fentebb már sokszor hivatkozott cd utasítással.
for file in *; do
if [[ "$file" == *" "* ]]; then
mv "$file" "${file// /-}"
fi
done
Ennek eredményeként a nyito kep 01.jpg fájlból nyito-kep-01.jpg fájl lesz. Ha viszont épp a kötőjelez cserélnénk más szimbólumra, használhatjuk így is (esetünkben felkiáltójel lesz belőle), de ha webre kell, figyeljünk rá, hogy azzal kompatibilis legyen a kiválasztott csere szimbólum (leginkább - vagy _).
for file in *; do
if [[ "$file" == *"-"* ]]; then
mv "$file" "${file//-/!}"
fi
done
Magyar ékezetes karakterek eltávolítása fájlnevekből
Ha pedig már leakadtunk a webes feltöltésre kompatibilis fájlneveknél, az sem árt, ha oda ékezetek nélküli neveket adunk meg. És mielőtt valaki a haját tépné, hogy mit tegyen több tucat ékezetes névvel ellátott fájllal, nos, ezt:
for f in *; do
new=$(echo "$f" | tr "áéíóöőúüűÁÉÍÓÖŐÚÜŰ" "aeiooouuuAEIOOOUUU")
if [ "$f" != "$new" ]; then
mv "$f" "$new"
fi
done
Persze előtte itt is be kell lépni a fájlokat tartalmazó mappába a Terminalban a cd utasítás után megadva a teljes elérési utat. Az eredmény: az árvíztűrő-tükörfúrógép.jpg fájlból arvizturo-tukorfurogep.jpg nevű lesz. De természetesen mindegy, mi volt a név, minden ékezetes karaktert az annak megfelelő ékezet nélkülire cserél az utasítás a mappa összes fájlnevében.
Mappa méretének ellenőrzése
Végül álljon itt néhány praktikus és egyszerű utasítás, amelyek sokszor jöhetnek jól. Az egyik a du -sh, amely ebben a formában megadja annak a mappának a méretét, amelyben éppen állunk a Terminalban. De ha utána írjuk a kívánt mappa elérési útját, akkor annak a méretét kapjuk meg. Például: du -sh "/elérési/út/a/mappához"
Ha az alkönyvtárak méretére is kíváncsiak vagyunk, akkor a * szimbólumot kell használnunk. A du -sh * azon mappa almappáinak és állományainak méretét írja ki darabonként, amelyben állunk, míg a du -sh "/elérési/út/a/mappához/*" változat a megadott mappa almappáiról és állományairól ad tájékoztatást. Ha még a | sort -h paramétert is utána írjuk, akkor méret szerinti sorrendben listáz (például du -sh *| sort -h).
Összegzésül
Bár a Terminal elsőre ijesztőnek tűnhet, de a fenti parancsok jó része valójában csak újrahasznosítható sablon. Ha valaki gyakran dolgozik webre szánt fájlokkal vagy letöltött dokumentumokkal, ezekkel a megoldásokkal rengeteg időt spórolhat meg. A lényeg, hogy a veszélyesebb műveleteket, főleg a törlést és a tömeges átnevezést, mindig először listázással vagy tesztmappában érdemes kipróbálni. Ha pedig kritikus fontosságú állományokon végeznénk műveleteket, mindig készítsünk előtte biztonsági mentést azok eredeti állapotáról. Végül egy praktika még: macOS-en nem feltétlenül kell kézzel begépelni a hosszú mappa- vagy fájlelérési utakat a Terminalba. Elég a Finderből behúzni a fájlt vagy mappát a Terminal ablakába, és a rendszer automatikusan beszúrja a pontos elérési utat oda, ahol a kurzor éppen áll a Terminalban.







