Ako oddeliť názov súboru a príponu v Bash

Bash

Úvod:

Pri práci so súbormi v Bash možno často budete musieť oddeliť názov súboru od jeho prípony. Bežný prístup používa príkaz `cut`, ale táto metóda môže zlyhať pri názvoch súborov, ktoré obsahujú viacero bodiek.

Napríklad názov súboru ako „a.b.js“ by bol nesprávne rozdelený na „a“ a „b.js“ namiesto „a.b“ a „js“. Hoci Python poskytuje jednoduché riešenie s `os.path.splitext()`, použitie Pythonu nemusí byť vždy tou najefektívnejšou možnosťou. Tento článok skúma lepšie metódy na dosiahnutie tejto úlohy v Bash.

Príkaz Popis
${variable%.*} Rozšírenie parametrov na odstránenie prípony z názvu súboru.
${variable##*.} Rozšírenie parametrov na extrahovanie rozšírenia z názvu súboru.
awk -F. Nastaví oddeľovač polí na bodku, ktorá sa používa na rozdelenie názvu súboru.
OFS="." Oddeľovač výstupných polí v awk, ktorý sa používa na rekonštrukciu názvu súboru bez prípony.
NF-- Znižuje počet polí o jedno v awk, čím účinne odstraňuje rozšírenie.
${BASH_REMATCH} Pole, ktoré obsahuje zhody z regulárneho výrazu v Bash.
local variable Deklaruje premennú s lokálnym rozsahom v rámci funkcie v Bash.

Podrobné členenie riešení Bash

Poskytnuté skripty ponúkajú rôzne metódy na oddelenie názvu súboru a jeho prípony v Bash. Prvý skript používa rozšírenie parametrov Bash. Premenná odstráni predĺženie odstránením všetkého od poslednej periódy po koniec reťazca, pričom zachytí predĺženie tým, že vezme všetko po poslednej perióde. Táto metóda je jednoduchá a efektívna pre väčšinu štruktúr súborov. Druhý skript využíva , výkonný nástroj na spracovanie textu v prostrediach podobných Unixu. Nastavením oddeľovača polí na bodku pomocou -F., umožňuje rozdeliť názov súboru na časti. separátor výstupného poľa, a zníženie počtu polí s sú techniky na opätovné zostavenie názvu súboru bez jeho prípony.

Tretí skript využíva regulárne výrazy v jazyku Bash zachytiť skupiny v zhode regulárneho výrazu. Tento skript používa vzor, ​​ktorý rozdeľuje názov súboru do dvoch skupín: jedna pre základný názov a druhá pre príponu. Nakoniec skript vlastnej funkcie zapuzdruje logiku rozšírenia parametrov v rámci funkcie, čím zlepšuje opätovnú použiteľnosť a čitateľnosť kódu. Používa sa deklarácie na udržanie rozsahu premenných v rámci funkcie, čím sa zabráni neúmyselným vedľajším účinkom vo väčších skriptoch. Každá metóda demonštruje odlišný prístup k riešeniu toho istého problému a ukazuje všestrannosť a silu skriptovania Bash.

Použitie rozšírenia parametrov v Bash

Bash skriptovanie

#!/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"

Použitie Awk na oddelenie názvu súboru a prípony

Bash s Awk

#!/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"

Používanie regulárnych výrazov v Bash

Bash skriptovanie s regulárnym výrazom

#!/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"

Používanie vlastnej funkcie v Bash

Bash skriptovanie s vlastnou funkciou

#!/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"

Skúmanie alternatívnych metód na manipuláciu so súbormi v Bash

Okrem už diskutovaných metód existujú v Bash ďalšie užitočné techniky na manipuláciu s názvami súborov a príponami. Jedna z takýchto metód zahŕňa použitie a príkazy. možno použiť na extrahovanie názvu súboru z cesty, zatiaľ čo dirname získa cestu k adresáru. Kombináciou týchto príkazov s rozšírením parametrov môžete efektívne oddeliť názvy súborov a prípony. Napríklad pomocou odstráni príponu z názvu súboru. Tento prístup je užitočný najmä pri práci s úplnými cestami k súborom a nie iba s názvami súborov.

Ďalšia metóda zahŕňa použitie , výkonný stream editor na filtrovanie a transformáciu textu. Vytvorením vhodných regulárnych výrazov dokáže izolovať názov súboru a príponu. Napríklad príkaz rozdelí názov súboru a príponu a umiestni ich do samostatných skupín zachytávania. Táto technika je flexibilná a dokáže zvládnuť zložité štruktúry názvov súborov. Skúmanie týchto dodatočných nástrojov a metód rozširuje vašu schopnosť manipulovať s údajmi súborov v Bash a poskytuje robustné riešenia pre rôzne scenáre skriptovania.

Často kladené otázky o manipulácii so súbormi Bash

  1. Aký je účel príkaz?
  2. Odstráni príponu z názvu súboru odstránením všetkého po poslednej bodke.
  3. Ako sa príkazová práca?
  4. Extrahuje príponu tak, že vezme všetko po poslednej bodke v názve súboru.
  5. Čo robí urobiť v poskytnutom skripte?
  6. Nastavuje oddeľovač polí na bodku, čo umožňuje rozdeliť názov súboru na časti.
  7. Prečo používať v an skript?
  8. Znižuje počet polí o jedno, čím efektívne odstraňuje príponu z názvu súboru.
  9. Ako pomáhajú regulárne výrazy pri extrakcii názvu súboru a prípony?
  10. Umožňujú porovnávanie a zoskupovanie vzorov, ktoré môžu izolovať rôzne časti názvu súboru.
  11. Aká je výhoda používania vlastnej funkcie v Bash?
  12. Vlastná funkcia zlepšuje opätovnú použiteľnosť a čitateľnosť kódu, vďaka čomu sú skripty modulárnejšie.
  13. Ako to robí pomôcť s názvami súborov?
  14. Extrahuje názov súboru z celej cesty k súboru, voliteľne odstráni príponu.
  15. Môcť použiť na manipuláciu s názvom?
  16. Áno, môže použiť regulárne výrazy na transformáciu a izoláciu častí názvov súborov.

Zbalenie riešení pre extrakciu názvu súboru a prípony

Na záver, extrahovanie názvov súborov a rozšírení v Bash možno efektívne dosiahnuť rôznymi metódami, z ktorých každá vyhovuje iným potrebám a preferenciám. Či už používate rozšírenie parametrov, awk, sed alebo vlastné funkcie, tieto techniky ponúkajú flexibilné a efektívne riešenia. Pochopenie a používanie týchto príkazov zaisťuje, že skripty dokážu bez chýb spracovať názvy súborov s viacerými bodkami a inými zložitosťami.