Loe failinime ilma laiendita Bashis

Read Filename Without Extension Bash



Linuxi kasutajad peavad failidega regulaarselt töötama mitmel eesmärgil. Mõnikord peavad kasutajad lugema faili baasnime ainult faililaiendi eemaldamisega. Failinime ja laiendit saab Linuxis erinevatel muutujatel eraldada ja salvestada mitmel viisil. Faili laiendi eemaldamiseks saab kasutada Bashi sisseehitatud käske ja kesta parameetrite laiendamist. Selles juhendis selgitatakse, kuidas ilma laiendita failinime saab lugeda ülaltoodud viisil.

Failinime lugemiseks käsu 'basename' kasutamine

Käsku 'basename' kasutatakse failinime lugemiseks ilma laiendita kataloogist või failiteelt.







Süntaks:



põhinimiNIMI[SUFFIX]

või



põhinimiVALIK ... NIMI ...

Siin võib NAME sisaldada failinime või täieliku teega failinime. SUFFIX on valikuline ja sisaldab faililaiendi osa, mille kasutaja soovib eemaldada. Käsul 'basename' on mõned valikud, mida on kirjeldatud allpool.





Valikud

Nimi Kirjeldus
-juurde Seda kasutatakse käsu argumentidena mitme failinime edastamiseks koos teega või ilma.
-s Seda kasutatakse laiendi edastamiseks sufiksina, mis tuleb eemaldada.
-Koos Seda kasutatakse mitme failinime kuvamiseks, eraldades iga faili nulliga.
- abi Seda kasutatakse käsu 'basename' kasutamise teabe kuvamiseks.
- versioon Seda kasutatakse versiooniteabe kuvamiseks.

Näide-1: NAME ja SUFFIX kasutamine

Järgmine käsk basename otsib failinime koos laiendiga. SUFFIX jäetakse sellest käsust välja. Siin on väljund „Product.txt” .



$põhinimi /Kodu/fahmida/koodi/product.txt

Kui soovite failinime alla laadida ilma laiendita, peate faililaiendi SUFFIX andma käsuga 'basename'. Siin on laiend .txt. Laiendi failist eemaldamiseks käivitage järgmine käsk.

$põhinimi /Kodu/fahmida/koodi/product.txt .txt

Näide-2: valiku „-a” ja NIMI kasutamine

Selles näites on näidatud käsu 'basename' suvandi -a kasutamine. Siin edastatakse kaks faili teed argumentidena käsuga 'basename'. Iga failinimi koos laiendiga laaditakse teelt välja ja prinditakse uue rea abil.

$põhinimi -juurde /Kodu/fahmida/index.html/Kodu/fahmida/koodi/emp.txt

Näide-3: valiku „-z” ja NIMI kasutamine

Valikut „-z” kasutatakse käsuga „basename“, et printida uue rea asemel mitu failinime tühiväärtusega. Järgmine käsk kasutab kahte võimalust koos--a ja--z. Siin on kaks failinime, index.html ja emp.txt prinditakse ilma tühiku ja uue reata.

$põhinimi -neid /Kodu/fahmida/index.html/Kodu/fahmida/koodi/emp.txt

Näide-4: valiku „-s” ja NIMI kasutamine

Järgmist käsku saab kasutada SUFFIXi alternatiivina koos basename'iga. Faililaiendi failist eemaldamiseks peab faililaiend läbima valiku „-sh”. Järgmine näide eemaldab failist laiendi „-sh”, „lisandus.sh”.

$põhinimi -s.sh lisaks.sh

Näide-5: eemaldage faililaiend ilma SUFFIXita

Kui te ei tea faili laiendit, mille soovite failinimest eemaldada, aitab see näide teil probleemi lahendada. Looge fail nimega read_file.sh mis tahes laiendi failinime hankimiseks järgmise koodiga. Selles näites kasutatakse käsku 'sed', et eemaldada failinimest mis tahes tüüpi laiend. Kui käivitate skripti, on väljund „ keskmine 'Pärast laienduse eemaldamist' py '.

read_file.sh

#!/bin/bash
# Määrake failinimi koos teega
faili nimi='/home/fahmida/code/average.py'
# Lugege failinime ilma laiendita, kasutades käske 'basname' ja 'sed'
viskas välja '$ (basename '$ filename' | sed 's/ (.*) ..*/ 1/')'

Käivitage skript.

$löömaread_file.sh

Näide-6: teisendage faililaiend txt-st docx-ks

Ilma laiendita failinimi peab faili teisendama ühest laiendusest teise. See näide näitab, kuidas saate muuta kõigi tekstifailide (.txt) laienduse sõnafailideks (.docx), kasutades bash -skripti käsku 'basename'. Looge fail nimega, convert_file.sh järgmise koodiga. Siin kasutatakse for-in-tsüklit kõigi tekstifailide lugemiseks .txt laiend praegusest kataloogist. Ilma laiendita failinime loeb käsk 'basename' ja nimetab selle ümber, lisades laiendi .docx igasse tsükli iteratsiooni.

convert_file.sh

#!/bin/bash
# tsükkel loeb iga tekstifaili praegusest kataloogist
eestfaili nimisisse ''ls *.txt''
teha
# Printige tekstifaili nimi enne teisendamist
viskas välja Failinimi enne teisendamist:$ failinimi'
# Muutke faili txt laiend laiendiks docx
mv - '$ failinimi' '$ (basename - '$ filename' .txt).docx '
tehtud

Käivitage skript.

$löömaconvert_file.sh

Kontrollige, kas tekstifailid on teisendatud või mitte, kasutades käsku ls.

$ls

Näide-7: lugege failinime ilma laiendita, kasutades Shelli parameetrit

Shelli parameetrite laiendamine on veel üks viis failinime lugemiseks ilma laiendita bash -is. See näide näitab kesta parameetrite laiendamise võimalusi. Järgmine käsk salvestab faili tee nime muutuja $ faili nimi .

$faili nimi='/var/usr/temp/myfile.tar.gz'

Järgmine käsk eemaldab teelt igat tüüpi laiendid ja salvestab muutujatesse ilma laiendita failitee, $ fail1 .

$fail1='$ {failinimi %%.*}'

Järgmine käsk prindib failinime ainult teelt. Siin on väljund ' minu fail '.

$viskas välja '$ {file1 ##*/}'

Kui failinimi sisaldab kahte kahe punktiga laiendit (.) Ja soovite failinime lugeda, eemaldades faili viimase laiendi, peate kasutama järgmist käsku. Käivitage järgmine käsk, mis salvestab faili tee muutuja sisse, $ fail2 eemaldades faili viimase laiendi.

$fail2='$ {failinimi%.*}'

Nüüd käivitage järgmine käsk, et printida failinimi ühe punkti (.) Laiendiga. Siin saab väljund olema myfile.tar.

$viskas välja '$ {file2 ## * /}'

Järeldus

Laiendita failinimi on vajalik erinevatel eesmärkidel. Selles juhendis selgitatakse mõningaid laiendita failinime kasutusviise, kasutades mõningaid näiteid, näiteks failide teisendamine. See õpetus aitab huvitatud kasutajatel õppida, kuidas eraldada faili nimi ja laiend failiteest. Siin selgitatakse kahte viisi. Kasutaja saab failinime väljavõtmiseks ainult failiteelt järgida mõnda neist viisidest.