Számos asztali Linux rendszer menti a képernyőképeket a következő nevekkel: Screenshot from 2020-11-29 18-57-51.png
. Gyakran arra volt szükség, hogy átnevezd a fájlokat valami nyilvánvalóbbra, például webinar1.png
, webinar2.png
, stb. Szerencsére egy csomó fájl átnevezése nagyon egyszerűen elvégezhető a Linux parancssorán.
A Bash shell nagyon sokoldalú, és különböző módszereket kínál az értékek értékelésére és a változók kibővítésére. Egy ügyes értékelés az számtani értékelés. Az értékelés elvégzéséhez csomagolja be az aritmetikai állítást $((
és ))
.
Az értékelés tartalmazhat változó bővítést, mint például $sum
értékdé válni. De a kényelem kedvéért a Bash-változók között szerepel $((
és ))
automatikusan kibővülnek. Például egy változó számának növelésével 1-vel írja be a következőket:
count=$(( count + 1 ))
Ez megegyezik a gépeléssel:
count=$(( $count + 1 ))
Az aritmetikai bővítés ugyanazokat az operátorokat támogatja, amelyek más programozási nyelveken megtalálhatók, beleértve a +
és -
összeadáshoz és kivonáshoz, *
és /
– szorzásra és osztásra, és %
a maradékra. Használhatja is ++
és --
a változó értékének növeléséhez és csökkentéséhez. Keresse meg a Bash kézikönyvoldalát, és görgessen le az ARITMETIKAI ÉRTÉKELÉS menüpontig a támogatott operátorok teljes listájához és elsőbbségéhez.
Az összes képernyőképem átnevezéséhez meg kellett írnom ezt az egysoros Bash parancsot:
n=1; for f in Screenshot*.png; do mv -v "$f" webinar$n.png; n=$(( n + 1 )); done
De mit csinál ez?
A parancs első része, n=1
, inicializálja a változót n
1-ig.
Akkor használom a for
ciklus az összes kezdő fájl kezelésére Screenshot
és a .png
kiterjesztés. Ezek általában az összes képernyőkép, amelyet az utolsó webinárium során készítettem. Ha pontosabbnak kell lennem, akkor feltüntethetem a dátumot a fájl specifikációban, például Screenshot from 2020-11-29*.png
. A visszavágás szó szerinti menekülés a fájlnév szóközeinek megőrzése érdekében.
A for ciklus minden iterációja fájlnevet tárol az f változóban. Így a mv
parancs mv -v "$f" webinar$n.png
nevezzen át minden fájlt az általam preferált fájlnevekre, például: webinar1.png
, webinar2.png
, stb. Idézetekre van szükségem a $f
változó tágulás, így a szóközök Screenshot from YYYY-MM-DD hh-mm-ss.png
ne okozzon problémát az én mv
parancs. Ha olyan hibát kap, mint a mv: target 'webinar1.png' is not a directory
, valószínűleg nem tett idézőjelet a $f
.
Végül növelem az értéket a n
változó, így készen áll a ciklus következő iterációjára. A számtani tágulás n=$(( n + 1 ))
növeli a n
változó 1-vel.