Preberite ime datoteke brez razširitve v Bashu

Read Filename Without Extension Bash



Uporabniki Linuxa morajo za različne namene redno delati z datotekami. Včasih morajo uporabniki prebrati osnovno ime datoteke samo tako, da odstranijo pripono datoteke. Ime in razširitev datoteke lahko v sistemu Linux na več načinov ločite in shranite na različne spremenljivke. Za odstranitev razširitve datoteke lahko uporabite vgrajen ukaz in razširitev parametrov lupine. Kako je mogoče datoteko brez razširitve prebrati na zgoraj omenjene načine, je razloženo v tej vadnici.

Za branje imena datoteke uporabite ukaz `basename`

Ukaz `basename` se uporablja za branje imena datoteke brez razširitve iz imenika ali poti do datoteke.







Sintaksa:



basenameNAME[SUFFIX]

ali



basenameMOŽNOST ... IME ...

Tukaj lahko NAME vsebuje ime datoteke ali ime datoteke s polno potjo. SUFFIX ni obvezen in vsebuje del razširitve datoteke, ki ga uporabnik želi odstraniti. Ukaz `basename` ima nekaj možnosti, ki so opisane spodaj.





Opcije

Ime Opis
-za Uporablja se za posredovanje več imen datotek s potjo ali brez nje kot ukazne argumente.
-s Uporablja se za razširitev kot pripono, ki jo je treba odstraniti.
-Z Uporablja se za prikaz več imen datotek z ločitvijo vsake datoteke z null.
- pomoč Uporablja se za prikaz informacij o uporabi ukaza 'basename'.
- različica Uporablja se za prikaz podatkov o različici.

Primer 1: Uporaba NAME in SUFFIX

Naslednji ukaz `basename` bo pridobil ime datoteke s pripono. SUFFIX je izpuščen iz tega ukaza. Tukaj je izhod 'Product.txt' .



$basename /doma/fahmida/Koda/product.txt

Če želite pridobiti ime datoteke brez razširitve, morate podaljšek datoteke podati kot SUFFIX z ukazom `basename`. Tukaj je razširitev .txt. Zaženite naslednji ukaz, da odstranite razširitev iz datoteke.

$basename /doma/fahmida/Koda/product.txt .txt

Primer-2: Uporaba možnosti '-a' in NAME

V tem primeru je prikazana uporaba možnosti '-a' ukaza 'basename'. Tu sta kot argumenta z ukazom 'basename' posredovani dve poti datotek. Vsako ime datoteke s pripono bo priklicano s poti in natisnjeno z novo vrstico.

$basename -za /doma/fahmida/index.html/doma/fahmida/Koda/emp.txt

Primer-3: Uporaba možnosti '-z' in NAME

Možnost '-z' se uporablja z ukazom 'basename' za tiskanje več imen datotek z ničelno vrednostjo namesto nove vrstice. Naslednji ukaz uporablja skupaj dve možnosti, '-a' in '-z'. Tu sta dva imena datotek, index.html in emp.txt bo tiskal brez presledka ali nove vrstice.

$basename - /doma/fahmida/index.html/doma/fahmida/Koda/emp.txt

Primer 4: Uporaba možnosti '-s' in NAME

Naslednji ukaz lahko uporabite kot alternativo SUFFIX z `basename`. Razširitev datoteke mora preiti z možnostjo '-sh', da odstranite razširitev datoteke iz datoteke. Naslednji primer bo iz datoteke odstranil razširitev '-sh', 'add.sh'.

$basename -s.sh dodatek.sh

Primer 5: Odstranite razširitev datoteke brez SUFFIX

Če ne poznate razširitve datoteke, ki jo želite odstraniti iz imena datoteke, vam bo ta primer pomagal rešiti težavo. Ustvarite datoteko z imenom read_file.sh z naslednjo kodo za pridobitev imena datoteke katere koli razširitve. Ukaz `sed` se v tem primeru uporablja za odstranitev katere koli vrste razširitve iz imena datoteke. Če zaženete skript, bo izpis » povprečje 'Po odstranitvi razširitve' py '.

read_file.sh

#!/bin/bash
# Nastavite ime datoteke s potjo
Ime datoteke='/home/fahmida/code/average.py'
# Preberite ime datoteke brez razširitve z uporabo ukaza 'basname' in `sed`
vrgel ven '$ (osnovno ime '$ ime datoteke' | sed 's/ (.*) ..*/ 1/')'

Zaženite skript.

$bashread_file.sh

Primer-6: Pretvorbo datoteke pretvorite iz txt v docx

Ime datoteke brez razširitve mora datoteko pretvoriti iz ene razširitve v drugo. Ta primer prikazuje, kako lahko z ukazom `basename` v skriptu bash spremenite razširitev vseh besedilnih datotek (.txt) v besedilne datoteke (.docx). Ustvarite datoteko z imenom, convert_file.sh z naslednjo kodo. Tukaj se zanka for-in uporablja za branje vseh besedilnih datotek .txt razširitev iz trenutnega imenika. Ime datoteke brez razširitve se prebere z ukazom `basename` in preimenuje tako, da se v vsako ponovitev zanke doda razširitev .docx.

convert_file.sh

#!/bin/bash
# zanka bo prebrala vsako besedilno datoteko iz trenutnega imenika
zaIme datotekev ''ls *.txt''
naredi
# Pred pretvorbo natisnite ime besedilne datoteke
vrgel ven 'Ime datoteke pred pretvorbo:$ ime datoteke'
# Spremenite razširitev datoteke txt v docx
mv - '$ ime datoteke' '$ (basename - '$ filename' .txt).docx'
Končano

Zaženite skript.

$bashconvert_file.sh

Preverite, ali so besedilne datoteke pretvorjene ali ne, z ukazom `ls`.

$ls

Primer 7: Preberite ime datoteke brez razširitve z razširitvijo parametrov Shell

Razširitev parametrov lupine je še en način za branje imena datoteke brez razširitve v bash. Ta primer prikazuje uporabo razširitve parametrov lupine. Naslednji ukaz bo ime datoteke shranil v spremenljivko $ Ime datoteke .

$Ime datoteke='/var/usr/temp/myfile.tar.gz'

Naslednji ukaz bo odstranil vse vrste razširitev s poti in pot datoteke shranil brez razširitve v spremenljivko, $ file1 .

$datoteka1='$ {ime datoteke %%.*}'

Naslednji ukaz bo natisnil ime datoteke samo s poti. Tukaj bo izhod ' myfile '.

$vrgel ven '$ {file1 ##*/}'

Če ime datoteke vsebuje dve razširitvi z dvema pikama (.) In želite prebrati ime datoteke tako, da odstranite zadnjo pripono datoteke, morate uporabiti naslednji ukaz. Zaženite naslednji ukaz, ki shrani pot datoteke do spremenljivke, $ file2 z odstranitvijo zadnje razširitve datoteke.

$datoteka 2='$ {ime datoteke%.*}'

Zdaj zaženite naslednji ukaz, da natisnete ime datoteke z eno piko (.). Tukaj bo rezultat myfile.tar.

$vrgel ven '$ {file2 ## * /}'

Zaključek

Ime datoteke brez razširitve je potrebno za različne namene. Nekatere uporabe imena datoteke brez razširitve so v tej vadnici razložene z nekaterimi primeri, kot je pretvorba datotek. Ta vadnica bo pomagala tistim uporabnikom, ki jih zanima, kako se naučiti ločiti ime datoteke in njeno razširitev od poti do datoteke. Tu sta razložena dva načina. Uporabnik lahko po katerem koli od teh načinov izvleče ime datoteke samo iz poti do datoteke.