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.