Pakk ut filnavn og utvidelse i Bash

Introduksjon

Det er mange grunner til at du kanskje vil trekke ut filnavnet og filtypen til en fil i Bash:

  • For å manipulere filnavnet eller filtypen – Det kan være lurt å trekke ut filnavnet eller filtypen for å endre den, for eksempel å legge til et prefiks eller suffiks til filnavnet, eller endre filtypen.

  • For å lage en fil med et unikt navn – Det kan være lurt å trekke ut filnavnet og filtypen for å lage en ny fil med et unikt navn, for eksempel ved å legge til et tidsstempel eller et tilfeldig tall til filnavnet.

  • For å bruke filnavnet eller filtypen i et skript eller kommando – Det kan være lurt å trekke ut filnavnet eller filtypen for å bruke det som et argument eller input for et skript eller kommando, for eksempel for å sende det til et program eller for å lage en fil med samme navn som en katalog.

  • For å trekke ut informasjon fra filnavnet eller filtypen – Det kan være lurt å trekke ut filnavnet eller filtypen for å trekke ut informasjon fra det, for eksempel dato eller filtype.

I denne artikkelen tar vi en titt på de tre vanligste måtene du kan trekke ut filnavn og filtype i Bash. Vi tar en titt på hver av dem og gir deg fordeler og ulemper, slik at du kan ta en utdannet beslutning om hvilken tilnærming som passer deg best.

Metode 1: Bruke basenavn Kommando

De basename kommandoen kan brukes til å trekke ut filnavnet og filtypen fra en filbane:

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

Selv om denne metoden er ganske enkel og lett å bruke, er det dessverre ingen måte vi kan pakke ut bare filnavnet (uten utvidelse) uten etterbehandling.

Du kan også bruke dirname kommando for å trekke ut katalogbanen separat:

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

Pros:
  • Enkel å bruke
  • Håndterer filnavn med mellomrom riktig
Cons:
  • Trekker bare ut filnavnet og kan ikke pakke ut utvidelsen separat uten ytterligere behandling

Metode 2: Bruke parameterutvidelse

Bash gir en funksjon kalt parameterutvidelse, som lar deg trekke ut deler av en variabel ved hjelp av en spesiell syntaks. Du kan for eksempel bruke følgende syntaks til å trekke ut filnavnet og filtypen fra en filbane som er lagret i en variabel:

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

Du kan også bruke parameterutvidelse for å trekke ut utvidelsen separat:

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

Pros:
  • Fleksibel
  • Kan trekke ut både filnavnet og filtypen separat,
  • Håndterer filnavn med mellomrom riktig
Cons:
  • Krever en variabel for å lagre filbanen

Metode 3: Bruke awk kommando

De awk kommando er et kraftig tekstbehandlingsverktøy som kan brukes til å trekke ut deler av en streng. Du kan for eksempel bruke følgende syntaks til å trekke ut filnavnet og filtypen fra en filbane:

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

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

Du kan også bruke awk for å trekke ut utvidelsen separat:

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

Pros:
  • Kraftig
  • Kan trekke ut både filnavnet og filtypen separat
  • Håndterer filnavn med mellomrom riktig
Cons:
  • Syntaks kan være ukjent for noen brukere
  • Krever piping av filbanen gjennom awk

konklusjonen

Totalt sett kan det å trekke ut filnavnet og filtypen til en fil i Bash være en nyttig teknikk for å jobbe med filer og utføre ulike oppgaver i Bash-skallet.

Hver av de nevnte metodene har sine egne fordeler og ulemper, og det beste valget vil avhenge av dine spesifikke behov og preferanser. Det er ofte nyttig å være kjent med flere tilnærminger slik at du kan velge den som passer best for din situasjon.

Tidstempel:

Mer fra Stackabuse