Kā atdalīt faila nosaukumu un paplašinājumu programmā Bash

Kā atdalīt faila nosaukumu un paplašinājumu programmā Bash
Kā atdalīt faila nosaukumu un paplašinājumu programmā Bash

Ievads:

Strādājot ar failiem programmā Bash, iespējams, bieži būs jāatdala faila nosaukums no tā paplašinājuma. Izplatīta pieeja izmanto komandu “cut”, taču šī metode var neizdoties, ja failu nosaukumi satur vairākus punktus.

Piemēram, faila nosaukums, piemēram, "a.b.js", tiktu nepareizi sadalīts "a" un "b.js", nevis "a.b" un "js". Lai gan Python nodrošina vienkāršu risinājumu ar "os.path.splitext()", Python izmantošana ne vienmēr ir visefektīvākā iespēja. Šajā rakstā ir apskatītas labākas metodes šī uzdevuma veikšanai programmā Bash.

Komanda Apraksts
${variable%.*} Parametra paplašināšana, lai noņemtu paplašinājumu no faila nosaukuma.
${variable##*.} Parametra paplašināšana, lai izvilktu paplašinājumu no faila nosaukuma.
awk -F. Iestata lauku atdalītāju uz punktu, ko izmanto faila nosaukuma sadalīšanai.
OFS="." Izvades lauka atdalītājs awk, ko izmanto, lai rekonstruētu faila nosaukumu bez paplašinājuma.
NF-- Samazina lauku skaitu par vienu awk, efektīvi noņemot paplašinājumu.
${BASH_REMATCH} Masīvs, kas satur atbilstības no regulārās izteiksmes valodā Bash.
local variable Deklarē mainīgo ar lokālu darbības jomu Bash funkcijā.

Detalizēts Bash risinājumu sadalījums

Piedāvātie skripti piedāvā dažādas metodes faila nosaukuma un tā paplašinājuma atdalīšanai Bash. Pirmais skripts izmanto Bash parametru paplašināšanu. Mainīgais ${FILE%.*} noņem paplašinājumu, noņemot visu no pēdējā perioda līdz virknes beigām, kamēr ${FILE##*.} fiksē pagarinājumu, ņemot visu pēc pēdējā perioda. Šī metode ir vienkārša un efektīva lielākajai daļai failu nosaukumu struktūru. Otrais skripts izmanto awk, spēcīgs teksta apstrādes rīks Unix līdzīgās vidēs. Iestatot lauku atdalītāju uz punktu, izmantojot -F., tas ļauj sadalīt faila nosaukumu daļās. Izvades lauka atdalītājs, OFS=".", un lauku skaita samazināšana ar NF-- ir paņēmieni faila nosaukuma atkārtotai salikšanai bez tā paplašinājuma.

Trešais skripts izmanto regulāras izteiksmes valodā Bash, izmantojot piesaisti ${BASH_REMATCH} lai tvertu grupas regulārā izteiksmē. Šis skripts izmanto modeli, kas sadala faila nosaukumu divās grupās: viena pamata nosaukumam un viena paplašinājumam. Visbeidzot, pielāgotās funkcijas skripts iekapsulē parametru paplašināšanas loģiku funkcijā, uzlabojot koda atkārtotu izmantošanu un lasāmību. Tā izmanto local variable deklarācijas, lai saglabātu mainīgo tvērumu funkcijā, novēršot neparedzētas blakusparādības lielākos skriptos. Katra metode demonstrē atšķirīgu pieeju vienas un tās pašas problēmas risināšanai, parādot Bash skriptu daudzpusību un jaudu.

Parametru paplašināšanas izmantošana programmā Bash

Bash skriptēšana

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

Awk izmantošana, lai atdalītu faila nosaukumu un paplašinājumu

Bash ar 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"

Regulāro izteiksmju izmantošana programmā Bash

Bash skriptēšana ar regulāro izteiksmi

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

Pielāgotas funkcijas izmantošana programmā Bash

Bash skriptēšana ar pielāgotu funkciju

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

Alternatīvu failu manipulācijas metožu izpēte programmā Bash

Papildus jau apspriestajām metodēm programmā Bash ir arī citi noderīgi paņēmieni, lai manipulētu ar failu nosaukumiem un paplašinājumiem. Viena no šādām metodēm ietver izmantošanu basename un dirname komandas. basename var izmantot, lai izvilktu faila nosaukumu no ceļa, kamēr dirname izgūst direktorija ceļu. Apvienojot šīs komandas ar parametru paplašināšanu, var efektīvi atdalīt failu nosaukumus un paplašinājumus. Piemēram, izmantojot basename "$FILE" ".${FILE##*.}" noņem paplašinājumu no faila nosaukuma. Šī pieeja ir īpaši noderīga, strādājot ar pilniem failu ceļiem, nevis tikai ar failu nosaukumiem.

Vēl viena metode ietver izmantošanu sed, spēcīgs straumes redaktors teksta filtrēšanai un pārveidošanai. Izveidojot atbilstošas ​​regulāras izteiksmes, sed var izolēt faila nosaukumu un paplašinājumu. Piemēram, komanda echo "$FILE" | sed 's/\(.*\)\.\(.*\)/\1 \2/' sadala faila nosaukumu un paplašinājumu, ievietojot tos atsevišķās uztveršanas grupās. Šī metode ir elastīga un var apstrādāt sarežģītas failu nosaukumu struktūras. Šo papildu rīku un metožu izpēte paplašina jūsu iespējas manipulēt ar failu datiem programmā Bash, nodrošinot stabilus risinājumus dažādiem skriptēšanas scenārijiem.

Bieži uzdotie jautājumi par Bash failu manipulācijām

  1. Kāds ir mērķis ${FILE%.*} komanda?
  2. Tas noņem paplašinājumu no faila nosaukuma, noņemot visu pēc pēdējā perioda.
  3. Kā darbojas ${FILE##*.} komanddarbs?
  4. Tas izvelk paplašinājumu, ņemot visu pēc pēdējā punkta faila nosaukumā.
  5. Ko dara awk -F. darīt norādītajā skriptā?
  6. Tas iestata lauku atdalītāju uz punktu, ļaujot faila nosaukumu sadalīt daļās.
  7. Kāpēc izmantot NF-- in an awk scenārijs?
  8. Tas samazina lauku skaitu par vienu, efektīvi noņemot paplašinājumu no faila nosaukuma.
  9. Kā regulārās izteiksmes palīdz izvilkt faila nosaukumu un paplašinājumu?
  10. Tie nodrošina modeļu saskaņošanu un grupēšanu, kas var izolēt dažādas faila nosaukuma daļas.
  11. Kādas ir pielāgotas funkcijas izmantošanas priekšrocības programmā Bash?
  12. Pielāgota funkcija uzlabo koda atkārtotu izmantošanu un lasāmību, padarot skriptus modulārākus.
  13. basename palīdzēt ar failu nosaukumiem?
  14. Tas izvelk faila nosaukumu no pilna faila ceļa, pēc izvēles noņemot paplašinājumu.
  15. Var sed izmantot faila nosaukuma manipulācijām?
  16. Jā, sed var izmantot regulāras izteiksmes, lai pārveidotu un izolētu failu nosaukumu daļas.

Faila nosaukumu un paplašinājumu iegūšanas risinājumu apkopošana

Visbeidzot, failu nosaukumu un paplašinājumu izvilkšanu programmā Bash var efektīvi panākt, izmantojot dažādas metodes, no kurām katra ir piemērota dažādām vajadzībām un vēlmēm. Neatkarīgi no tā, vai tiek izmantotas parametru paplašināšanas, awk, sed vai pielāgotas funkcijas, šīs metodes piedāvā elastīgus un efektīvus risinājumus. Šo komandu izpratne un izmantošana nodrošina, ka skripti bez kļūdām var apstrādāt failu nosaukumus ar vairākiem punktiem un citām sarežģītībām.