Kaip atskirti failo pavadinimą ir plėtinį Bash

Kaip atskirti failo pavadinimą ir plėtinį Bash
Kaip atskirti failo pavadinimą ir plėtinį Bash

Įvadas:

Kai dirbate su „Bash“ failais, dažnai gali tekti atskirti failo pavadinimą nuo jo plėtinio. Įprastas metodas naudoja komandą „cut“, tačiau šis metodas gali nepavykti, kai failų pavadinimuose yra keli taškai.

Pavyzdžiui, failo pavadinimas, pvz., „a.b.js“, būtų neteisingai padalintas į „a“ ir „b.js“, o ne „a.b“ ir „js“. Nors „Python“ yra paprastas sprendimas naudojant „os.path.splitext()“, Python naudojimas ne visada gali būti efektyviausias pasirinkimas. Šiame straipsnyje nagrinėjami geresni metodai, kaip pasiekti šią užduotį „Bash“.

komandą apibūdinimas
${variable%.*} Parametrų išplėtimas, skirtas pašalinti plėtinį iš failo pavadinimo.
${variable##*.} Parametrų išplėtimas, norint išgauti plėtinį iš failo pavadinimo.
awk -F. Lauko skyrikliu nustatomas taškas, naudojamas failo pavadinimui padalinti.
OFS="." Išvesties lauko skyriklis awk, naudojamas atkurti failo pavadinimą be plėtinio.
NF-- Sumažina laukų skaičių vienu awk ir efektyviai pašalina plėtinį.
${BASH_REMATCH} Masyvas, kuriame yra reguliariosios Bash išraiškos atitikmenys.
local variable Deklaruoja kintamąjį su vietine apimtimi Bash funkcijoje.

Išsamus „Bash“ sprendimų suskirstymas

Pateikti scenarijai siūlo įvairius metodus, kaip atskirti failo pavadinimą ir jo plėtinį Bash. Pirmasis scenarijus naudoja „Bash“ parametrų išplėtimą. Kintamasis ${FILE%.*} pašalina plėtinį, pašalindama viską nuo paskutinio taško iki eilutės pabaigos, while ${FILE##*.} fiksuoja pratęsimą imdamas viską po paskutinio laikotarpio. Šis metodas yra paprastas ir efektyvus daugeliui failų pavadinimų struktūrų. Antrasis scenarijus naudoja awk, galingas teksto apdorojimo įrankis Unix tipo aplinkoje. Lauko skyrikliu nustatydami tašką naudodami -F., leidžia padalinti failo pavadinimą į dalis. Išvesties lauko separatorius, OFS=".", ir sumažinti laukų skaičių su NF-- yra būdai, kaip iš naujo surinkti failo pavadinimą be jo plėtinio.

Trečiasis scenarijus naudoja reguliarias „Bash“ išraiškas, svertus ${BASH_REMATCH} norėdami užfiksuoti grupes reguliariojo reiškinio atitiktyje. Šis scenarijus naudoja šabloną, kuris padalija failo pavadinimą į dvi grupes: vieną pagrindiniam pavadinimui ir kitą plėtiniui. Galiausiai, pasirinktinės funkcijos scenarijus įtraukia parametrų išplėtimo logiką funkcijoje, pagerindamas kodo pakartotinį naudojimą ir skaitomumą. Tai naudoja local variable deklaracijas, kad kintamieji būtų aprėpti funkcijoje, kad būtų išvengta nenumatytų šalutinių poveikių didesniuose scenarijuose. Kiekvienas metodas parodo skirtingą požiūrį į tos pačios problemos sprendimą, parodydamas Bash scenarijų universalumą ir galią.

Parametrų išplėtimo naudojimas programoje „Bash“.

Bash scenarijus

#!/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“ naudojimas norint atskirti failo pavadinimą ir plėtinį

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

Reguliariųjų reiškinių naudojimas programoje Bash

Bash scenarijus naudojant reguliarųjį reiškinį

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

Pasirinktinės funkcijos naudojimas Bash

Bash scenarijus su pasirinktine funkcija

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

Alternatyvių „Bash“ failų manipuliavimo metodų tyrinėjimas

Be jau aptartų metodų, „Bash“ yra ir kitų naudingų metodų, skirtų valdyti failų pavadinimus ir plėtinius. Vienas iš tokių metodų apima naudojimą basename ir dirname komandas. basename gali būti naudojamas failo pavadinimui išgauti iš kelio, while dirname nuskaito katalogo kelią. Šių komandų derinimas su parametrų išplėtimu gali efektyviai atskirti failų pavadinimus ir plėtinius. Pavyzdžiui, naudojant basename "$FILE" ".${FILE##*.}" pašalina plėtinį iš failo pavadinimo. Šis metodas ypač naudingas dirbant su visais failų keliais, o ne tik su failų pavadinimais.

Kitas metodas apima naudojimą sed, galingas srauto redaktorius, skirtas tekstui filtruoti ir transformuoti. Sukurdami tinkamas reguliarias išraiškas, sed gali išskirti failo pavadinimą ir plėtinį. Pavyzdžiui, komanda echo "$FILE" | sed 's/\(.*\)\.\(.*\)/\1 \2/' padalija failo pavadinimą ir plėtinį, sudėdamas juos į atskiras fiksavimo grupes. Ši technika yra lanksti ir gali valdyti sudėtingas failų vardų struktūras. Ištyrus šiuos papildomus įrankius ir metodus, išplečiamos jūsų galimybės manipuliuoti „Bash“ failų duomenimis, suteikiant patikimų sprendimų įvairiems scenarijų scenarijams.

Dažnai užduodami klausimai apie „Bash“ failų manipuliavimą

  1. Koks yra tikslas ${FILE%.*} komandą?
  2. Jis pašalina plėtinį iš failo pavadinimo pašalindamas viską po paskutinio taško.
  3. Kaip veikia ${FILE##*.} komandinis darbas?
  4. Jis ištraukia plėtinį, paimdamas viską po paskutinio taško failo pavadinime.
  5. Ką daro awk -F. padaryti pagal pateiktą scenarijų?
  6. Jis nustato lauko skyriklį į tašką, leidžiantį failo pavadinimą padalyti į dalis.
  7. Kodėl naudoti NF-- in an awk scenarijus?
  8. Tai sumažina laukų skaičių vienu, efektyviai pašalindama plėtinį iš failo pavadinimo.
  9. Kaip reguliarieji posakiai padeda išgauti failo pavadinimą ir plėtinį?
  10. Jie leidžia suderinti šablonus ir grupuoti, o tai gali išskirti skirtingas failo pavadinimo dalis.
  11. Kokia yra pasirinktinės funkcijos naudojimo Bash naudai?
  12. Pasirinktinė funkcija pagerina kodo pakartotinį naudojimą ir skaitomumą, todėl scenarijai tampa moduliškesni.
  13. Kaip basename padėti su failų pavadinimais?
  14. Jis ištraukia failo pavadinimą iš viso failo kelio, pasirinktinai pašalindamas plėtinį.
  15. Gali sed naudoti failo vardų manipuliavimui?
  16. taip, sed gali naudoti reguliariąsias išraiškas failų pavadinimų dalims transformuoti ir išskirti.

Failo vardo ir plėtinio ištraukimo sprendimų užbaigimas

Apibendrinant galima pasakyti, kad „Bash“ failų pavadinimus ir plėtinius galima efektyviai išgauti naudojant įvairius metodus, kurių kiekvienas atitinka skirtingus poreikius ir pageidavimus. Nesvarbu, ar naudojate parametrų išplėtimo, awk, sed ar pasirinktines funkcijas, šie metodai siūlo lanksčius ir efektyvius sprendimus. Šių komandų supratimas ir naudojimas užtikrina, kad scenarijai gali be klaidų tvarkyti failų pavadinimus su keliais taškais ir kitus sudėtingus dalykus.