Basahin ang filename nang walang extension sa Bash

Read Filename Without Extension Bash



Ang mga gumagamit ng Linux ay kailangang gumana nang regular sa mga file para sa maraming mga layunin. Minsan kailangang basahin lamang ng mga gumagamit ang basename ng file sa pamamagitan lamang ng pag-aalis ng extension ng file. Ang Filename at extension ay maaaring paghiwalayin at itago sa iba't ibang mga variable sa Linux sa pamamagitan ng maraming paraan. Ang Bash built-in na utos at pagpapalawak ng parameter ng shell ay maaaring magamit upang alisin ang extension ng file. Kung paano mabasa ang filename na walang extension sa pamamagitan ng paggamit ng mga paraan na nabanggit sa itaas ay ipinaliwanag sa tutorial na ito.

Gamit ang utos na `basename` na basahin ang filename

Ginagamit ang command na `basename` upang basahin ang pangalan ng file nang walang extension mula sa isang direktoryo o file path.







Syntax:



basenamePANGALAN[SUFFIX]

o



basenameOPSYON ... PANGALAN ...

Dito, maaaring maglaman ang NAME ng filename o filename na may buong landas. Ang SUFFIX ay opsyonal at naglalaman ito ng bahagi ng extension ng file na nais na alisin ng gumagamit. Ang utos ng `basename` ay may ilang mga pagpipilian na inilalarawan sa ibaba.





Mga pagpipilian

Pangalan Paglalarawan
-sa Ginagamit ito upang pumasa sa maraming mga filename na may path o walang path bilang mga argumento ng utos.
-s Ginagamit ito upang maipasa ang extension bilang panlapi na kailangang alisin.
-Nga Ginagamit ito upang ipakita ang maraming mga filename sa pamamagitan ng paghihiwalay sa bawat file na may null.
–Tulong Ginagamit ito upang ipakita ang impormasyon ng paggamit ng `basename` na utos.
–Pagpalit Ginagamit ito upang ipakita ang impormasyon sa bersyon.

Halimbawa-1: Paggamit ng NAME at SUFFIX

Ang sumusunod na utos na `basename` ay kukunin ang filename na may extension. Ang SUFFIX ay tinanggal mula sa utos na ito. Narito, ang output ay 'Product.txt' .



$basename /bahay/fahmida/code/produkto.txt

Kung nais mong makuha ang filename nang walang extension, kailangan mong ibigay ang extension ng file bilang SUFFIX na may 'basename` na utos. Dito, ang extension ay .txt. Patakbuhin ang sumusunod na utos upang alisin ang extension mula sa file.

$basename /bahay/fahmida/code/product.txt .txt

Halimbawa-2: Paggamit ng pagpipilian na '-a' at PANGALAN

Ang paggamit ng pagpipiliang '-a' ng utos ng `basename` ay ipinapakita sa halimbawang ito. Dito, ipinapasa ang dalawang mga landas ng file bilang mga argumento na may utos ng `basename`. Ang bawat filename na may extension ay kukuha mula sa path at mai-print sa pamamagitan ng newline.

$basename -sa /bahay/fahmida/index.html/bahay/fahmida/code/emp.txt

Halimbawa-3: Paggamit ng pagpipilian na '-z' at PANGALAN

Ginagamit ang pagpipiliang '-z' gamit ang utos na `basename` upang mai-print ang maraming mga filename na may null na halaga sa halip na newline. Ang sumusunod na utos ay gumagamit ng dalawang mga pagpipilian nang magkasama, '-a' at '-z'. Dito, dalawang filename, index.html at emp.txt ay mai-print nang walang anumang puwang o newline.

$basename -ang /bahay/fahmida/index.html/bahay/fahmida/code/emp.txt

Halimbawa-4: Paggamit ng pagpipilian na '-s' at PANGALAN

Ang sumusunod na utos ay maaaring gamitin bilang isang kahalili ng SUFFIX na may `basename`. Kailangang pumasa ang extension ng file sa pagpipiliang ‘-sh’ upang alisin ang extension ng file mula sa file. Aalisin ng sumusunod na halimbawa ang extension, '-sh' mula sa file, 'karagdagan.sh'.

$basename -s.sh karagdagan.sh

Halimbawa-5: Alisin ang extension ng file nang walang SUFFIX

Kung hindi mo alam ang extension ng file na nais mong alisin mula sa filename, makakatulong sa iyo ang halimbawang ito na malutas ang problema. Lumikha ng isang file na pinangalanan read_file.sh kasama ang sumusunod na code upang makuha ang filename ng anumang extension. Ginamit ang utos na `sed` sa halimbawang ito upang alisin ang anumang uri ng extension mula sa filename. Kung patakbuhin mo ang script, ang output ay ' average ’Matapos alisin ang extension na‘ py '.

read_file.sh

#! / baseng / bash
# Itakda ang filename na may path
filename='/home/fahmida/code/average.py'
# Basahin ang filename nang walang extension sa pamamagitan ng paggamit ng 'basname' at `sed` na utos
itinapon '$ (basename '$ filename' | sed 's / (. * ) .. * / 1 / ')'

Patakbuhin ang iskrip.

$bashread_file.sh

Halimbawa-6: I-convert ang extension ng file mula sa txt patungo sa docx

Ang filename na walang extension ay kailangang baguhin ang file mula sa isang extension patungo sa isa pa. Ipinapakita ng halimbawang ito na kung paano mo mababago ang extension ng lahat ng mga file ng teksto (.txt) sa mga salitang file (.docx) sa pamamagitan ng paggamit ng `basename` na utos sa bash script. Lumikha ng isang file na pinangalanan, convert_file.sh kasama ang sumusunod na code. Dito, ginagamit ang isang for-in loop upang mabasa ang lahat ng mga file ng teksto .txt extension mula sa kasalukuyang direktoryo. Ang filename nang walang extension ay binabasa ng utos ng `basename` at pinalitan ng pangalan sa pamamagitan ng pagdaragdag ng .docx extension sa bawat pag-ulit ng loop.

convert_file.sh

#! / baseng / bash
# ang loop ay basahin ang bawat file ng teksto mula sa kasalukuyang direktoryo
para safilenamesa 'ls *.txt'
gawin
# I-print ang filename ng teksto bago ang pag-convert
itinapon 'Filename bago ang pag-convert:$ filename'
# Baguhin ang extension ng file txt sa docx
mv - '$ filename' '$ (basename - '$ filename' .txt).docx '
tapos na

Patakbuhin ang iskrip.

$bashconvert_file.sh

Suriin ang mga text file na na-convert o hindi sa pamamagitan ng paggamit ng `ls` command.

$ls

Halimbawa-7: Basahin ang filename nang walang extension gamit ang pagpapalawak ng parameter ng Shell

Ang pagpapalawak ng parameter ng shell ay isa pang paraan upang mabasa ang filename nang walang extension sa bash. Ipinapakita ng halimbawang ito ang mga paggamit ng pagpapalawak ng parameter ng shell. Ang sumusunod na utos ay mag-iimbak ng file pathname sa variable, $ filename .

$filename='/var/usr/temp/myfile.tar.gz'

Aalisin ng sumusunod na utos ang lahat ng mga uri ng extension mula sa path at iimbak ang file path nang walang extension sa variable, $ file1 .

$file1='$ {filename %%. *}'

Ang sumusunod na utos ay mai-print lamang ang filename mula sa path. Dito, ang output ay ‘ myfile '.

$itinapon '$ {file1 ## * /}'

Kung ang filename ay naglalaman ng dalawang mga extension na may dalawang tuldok (.) At nais mong basahin ang filename sa pamamagitan ng pag-alis ng huling extension ng file pagkatapos ay kailangan mong gamitin ang sumusunod na utos. Patakbuhin ang sumusunod na utos na nag-iimbak ng file path sa variable, $ file2 sa pamamagitan ng pag-alis ng huling extension ng file.

$file2='$ {filename%. *}'

Ngayon, patakbuhin ang sumusunod na utos upang mai-print ang filename na may isang tuldok (.) Na extension. Dito, ang output ay magiging myfile.tar.

$itinapon '$ {file2 ## * /}'

Konklusyon

Kinakailangan ang filename nang walang extension para sa iba't ibang mga layunin. Ang ilang mga paggamit ng filename nang walang extension ay ipinaliwanag sa tutorial na ito sa pamamagitan ng paggamit ng ilang mga halimbawa tulad ng pag-convert ng file. Tutulungan ng tutorial na ito ang mga gumagamit na interesadong malaman ang mga paraan upang paghiwalayin ang pangalan ng file at extension mula sa file path. Dalawang paraan ang ipinaliwanag dito. Maaaring sundin ng gumagamit ang anuman sa mga paraan na ito upang makuha lamang ang filename mula sa file path.