Bevezetés:
Amikor fájlokkal dolgozik a Bashban, gyakran el kell különítenie a fájlnevet a kiterjesztésétől. Egy általános megközelítés a `cut` parancsot használja, de ez a módszer meghiúsulhat több pontot tartalmazó fájlneveknél.
Például egy olyan fájlnév, mint az „a.b.js”, helytelenül oszlik fel „a” és „b.js” részre az „a.b” és „js” helyett. Bár a Python egyszerű megoldást kínál az `os.path.splitext()` paraméterrel, a Python használata nem mindig a leghatékonyabb megoldás. Ez a cikk jobb módszereket vizsgál meg ennek a feladatnak a Bashban való megvalósítására.
Parancs | Leírás |
---|---|
${variable%.*} | Paraméterbővítés a kiterjesztés eltávolításához a fájlnévből. |
${variable##*.} | Paraméterbővítés a kiterjesztés fájlnévből való kibontásához. |
awk -F. | A mezőelválasztót egy pontra állítja, amely a fájlnév felosztására szolgál. |
OFS="." | Kimeneti mező elválasztó az awk-ban, a fájlnév kiterjesztés nélküli rekonstruálására szolgál. |
NF-- | Eggyel csökkenti a mezők számát az awk-ban, hatékonyan eltávolítva a kiterjesztést. |
${BASH_REMATCH} | Tömb, amely tartalmazza a Bash reguláris kifejezéseinek egyezéseit. |
local variable | A Bash függvényében egy helyi hatókörű változót deklarál. |
A Bash megoldások részletes lebontása
A mellékelt szkriptek különféle módszereket kínálnak a fájlnév és kiterjesztés elválasztására a Bashban. Az első szkript Bash paraméterbővítést használ. A változó eltávolítja a kiterjesztést úgy, hogy az utolsó ponttól a karakterlánc végéig mindent lecsupaszít, míg úgy rögzíti a hosszabbítást, hogy mindent az utolsó időszak után vesz. Ez a módszer egyszerű és hatékony a legtöbb fájlnév-struktúra esetében. A második szkript használja , egy hatékony szövegfeldolgozó eszköz Unix-szerű környezetekben. Ha a mezőelválasztót egy pontra állítja a segítségével -F., lehetővé teszi a fájlnév részekre bontását. A kimeneti mező elválasztó, , és a mezők számának csökkentése -val technikák a fájlnév kiterjesztése nélkül történő újraösszeállítására.
A harmadik szkript reguláris kifejezéseket használ Bashban, kihasználva csoportok rögzítésére egy regex egyezésben. Ez a szkript olyan mintát használ, amely a fájlnevet két csoportra osztja: egy az alapnévre, egy pedig a kiterjesztésre. Végül az egyéni függvényszkript a paraméterbővítési logikát egy függvényen belül tartalmazza, javítva a kód újrafelhasználhatóságát és olvashatóságát. Használja deklarációk, hogy a változók hatókörét a függvényen belül tartsák, megelőzve a nem kívánt mellékhatásokat a nagyobb szkriptekben. Mindegyik módszer más-más megközelítést mutat be ugyanazon probléma megoldásában, bemutatva a Bash szkriptelés sokoldalúságát és erejét.
Paraméterbővítés használata a Bashban
Bash szkriptelés
#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"
Az awk használata a fájlnév és a kiterjesztés elkülönítésére
Bash az Awkkal
#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"
Reguláris kifejezések használata Bashban
Bash szkriptelés reguláris kifejezéssel
#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"
Egyéni függvény használata a Bashban
Bash szkriptelés egyéni funkcióval
#!/bin/bash
# Function to extract filename and extension
extract_filename_extension() {
local file="$1"
echo "Filename: ${file%.*}"
echo "Extension: ${file##*.}"
}
# Call the function with a file
extract_filename_extension "a.b.js"
Fájlkezelés alternatív módszereinek felfedezése a Bash-ban
A már tárgyalt módszereken túlmenően a Bash más hasznos technikákat is tartalmaz a fájlnevek és a kiterjesztések manipulálására. Az egyik ilyen módszer a és parancsokat. használható a fájlnév elérési útból való kinyerésére, míg dirname lekéri a könyvtár elérési útját. Ezeknek a parancsoknak a paraméterbővítéssel történő kombinálása hatékonyan elválaszthatja a fájlneveket és a kiterjesztéseket. Például a használatával eltávolítja a kiterjesztést a fájlnévből. Ez a megközelítés különösen akkor hasznos, ha teljes fájlelérési utakkal dolgozik, nem csupán fájlnevekkel.
Egy másik módszer magában foglalja a használatát , egy hatékony adatfolyam-szerkesztő szöveg szűrésére és átalakítására. Megfelelő reguláris kifejezések létrehozásával, el tudja különíteni a fájlnevet és a kiterjesztést. Például a parancs felosztja a fájlnevet és a kiterjesztést, külön rögzítési csoportokba helyezve őket. Ez a technika rugalmas és bonyolult fájlnév-struktúrákat is képes kezelni. Ezeknek a további eszközöknek és módszereknek a felfedezése kibővíti a fájladatok kezelésének lehetőségét a Bashban, és robusztus megoldásokat kínál különféle szkriptelési forgatókönyvekhez.
Gyakran Ismételt Kérdések a Bash-fájlok kezelésével kapcsolatban
- Mi a célja a parancs?
- Eltávolítja a kiterjesztést a fájlnévből úgy, hogy az utolsó pont után mindent lehúz.
- Hogyan működik a parancsi munka?
- Kibontja a kiterjesztést úgy, hogy mindent a fájlnév utolsó pontja után vesz.
- Mit csinál csináld a megadott scriptben?
- A mezőelválasztót pontra állítja, lehetővé téve a fájlnév részekre bontását.
- Miért használja egy an forgatókönyv?
- Eggyel csökkenti a mezők számát, hatékonyan eltávolítva a kiterjesztést a fájlnévből.
- Hogyan segítenek a reguláris kifejezések a fájlnév és kiterjesztés kibontásában?
- Lehetővé teszik a mintaillesztést és a csoportosítást, amely elkülönítheti a fájlnév különböző részeit.
- Milyen előnyökkel jár az egyéni függvény használata a Bashban?
- Egy egyedi funkció javítja a kód újrafelhasználhatóságát és olvashatóságát, modulárisabbá téve a szkripteket.
- Hogyan működik segít a fájlnevekben?
- Kibontja a fájlnevet a teljes fájl elérési útjából, és adott esetben eltávolítja a kiterjesztést.
- Tud fájlnév-manipulációra használható?
- Igen, reguláris kifejezéseket használhat a fájlnevek részeinek átalakítására és elkülönítésére.
A fájlnév- és kiterjesztés-kivonat megoldásainak összefoglalása
Összefoglalva, a fájlnevek és kiterjesztések kibontása a Bash-ban hatékonyan megvalósítható különféle módszerekkel, amelyek mindegyike más-más igényeknek és preferenciáknak felel meg. Függetlenül attól, hogy paraméterbővítést, awk-t, sed-et vagy egyéni függvényeket használnak, ezek a technikák rugalmas és hatékony megoldásokat kínálnak. Ezeknek a parancsoknak a megértése és használata biztosítja, hogy a szkriptek hiba nélkül kezelni tudják a több ponttal rendelkező fájlneveket és egyéb bonyolultságokat.