Udpak filnavn og udvidelse i Bash

Introduktion

Der er mange grunde til, at du måske vil udpakke filnavnet og filtypenavnet på en fil i Bash:

  • For at manipulere filnavnet eller filtypenavnet – Du vil måske udpakke filnavnet eller filtypenavnet for at ændre det, såsom at tilføje et præfiks eller suffiks til filnavnet eller ændre filtypenavnet.

  • For at oprette en fil med et unikt navn – Du vil måske udpakke filnavnet og filtypenavnet for at oprette en ny fil med et unikt navn, f.eks. ved at tilføje et tidsstempel eller et tilfældigt tal til filnavnet.

  • For at bruge filnavnet eller filtypenavnet i et script eller en kommando – Du vil måske udpakke filnavnet eller filtypenavnet for at bruge det som et argument eller input til et script eller en kommando, såsom at sende det til et program eller for at oprette en fil med samme navn som en mappe.

  • For at udtrække information fra filnavnet eller filtypenavnet – Du ønsker måske at udtrække filnavnet eller filtypenavnet for at udtrække information fra det, såsom datoen eller filtypen.

I denne artikel tager vi et kig på de tre mest almindelige måder, hvorpå du kan udpakke filnavn og filtypenavn i Bash. Vi tager et kig på hver af dem og giver dig fordele og ulemper, så du kan træffe en kvalificeret beslutning om, hvilken tilgang der passer dig bedst.

Metode 1: Brug af basenavn Kommando

basename kommandoen kan bruges til at udtrække filnavnet og filtypenavnet fra en filsti:

filename=$(basename /path/to/file.txt)
echo $filename

Selvom denne metode er ret enkel og nem at bruge, er der desværre ingen måde, vi kun kan udtrække filnavnet (uden udvidelse) uden nogen efterbehandling.

Du kan også bruge dirname kommando for at udtrække mappestien separat:

directory=$(dirname /path/to/file.txt)
echo $directory

Fordele:
  • Enkel at bruge
  • Håndterer filnavne med mellemrum korrekt
Ulemper:
  • Udpakker kun filnavnet og kan ikke udpakke udvidelsen separat uden yderligere behandling

Metode 2: Brug af parameterudvidelse

Bash giver en funktion kaldet parameterudvidelse, som giver dig mulighed for at udtrække dele af en variabel ved hjælp af en speciel syntaks. For eksempel kan du bruge følgende syntaks til at udtrække filnavnet og filtypenavnet fra en filsti, der er gemt i en variabel:

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

Du kan også bruge parameterudvidelse til at udtrække udvidelsen separat:

extension=${filename##*.}
echo $extension

Fordele:
  • Fleksibel
  • Kan udtrække både filnavn og udvidelse separat,
  • Håndterer filnavne med mellemrum korrekt
Ulemper:
  • Kræver en variabel for at gemme filstien

Metode 3: Brug af akavet kommando

awk kommando er et kraftfuldt tekstbehandlingsværktøj, der kan bruges til at udtrække dele af en streng. For eksempel kan du bruge følgende syntaks til at udtrække filnavnet og filtypenavnet fra en filsti:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Tjek vores praktiske, praktiske guide til at lære Git, med bedste praksis, brancheaccepterede standarder og inkluderet snydeark. Stop med at google Git-kommandoer og faktisk lærer det!

Du kan også bruge awk for at udtrække udvidelsen separat:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Fordele:
  • Kraftfuld
  • Kan udtrække både filnavn og filtype separat
  • Håndterer filnavne med mellemrum korrekt
Ulemper:
  • Syntaks kan være ukendt for nogle brugere
  • Kræver piping af filstien igennem awk

Konklusion

Samlet set kan udpakning af filnavn og filtypenavn i Bash være en nyttig teknik til at arbejde med filer og udføre forskellige opgaver i Bash-skallen.

Hver af de nævnte metoder har sine egne fordele og ulemper, og det bedste valg vil afhænge af dine specifikke behov og præferencer. Det er ofte nyttigt at være bekendt med flere tilgange, så du kan vælge den, der passer bedst til din situation.

Tidsstempel:

Mere fra Stablemisbrug