Prečítajte si názov súboru bez prípony v Bash

Read Filename Without Extension Bash



Používatelia Linuxu musia so súbormi pravidelne pracovať na mnohé účely. Niekedy používatelia potrebujú prečítať základný názov súboru iba odstránením prípony súboru. Názov súboru a príponu je možné v systéme Linux oddeliť a uložiť do rôznych premenných niekoľkými spôsobmi. Na odstránenie prípony súboru je možné použiť vstavané príkazy a parametre parametra shellu. V tomto návode je vysvetlené, ako je možné čítať názov súboru bez prípony pomocou vyššie uvedených spôsobov.

Na prečítanie názvu súboru použite príkaz `basename`

Príkaz `basename` sa používa na čítanie názvu súboru bez prípony z adresára alebo cesty k súboru.







Syntax:



základné menoNÁZOV[SUFFIX]

alebo



základné menoMOŽNOSŤ ... NÁZOV ...

Tu môže NAME obsahovať názov súboru alebo názov súboru s úplnou cestou. SUFFIX je voliteľný a obsahuje časť s príponou súboru, ktorú chce používateľ odstrániť. Príkaz `basename` má niekoľko možností, ktoré sú popísané nižšie.





možnosti

názov Popis
-do Používa sa na odoslanie viacerých názvov súborov s cestou alebo bez cesty ako argumentmi príkazu.
-s Používa sa na odoslanie rozšírenia ako prípony, ktorú je potrebné odstrániť.
-S Slúži na zobrazenie viacerých názvov súborov oddelením každého súboru hodnotou null.
-Pomoc Slúži na zobrazenie informácií o použití príkazu `basename`.
–Verzia Slúži na zobrazenie informácií o verzii.

Príklad 1: Použitie NÁZOV a SUFFIX

Nasledujúci príkaz `basename` obnoví názov súboru s príponou. SUFFIX je v tomto príkaze vynechaný. Tu je výstup „Product.txt“ .



$základné meno /Domov/fahmida/kód/product.txt

Ak chcete získať názov súboru bez prípony, musíte zadať príponu súboru ako SUFFIX s príkazom `basename`. Tu je prípona .txt. Spustením nasledujúceho príkazu odstránite príponu zo súboru.

$základné meno /Domov/fahmida/kód/product.txt .txt

Príklad 2: Použitie možnosti „-a“ a NAME

V tomto príklade je ukázané použitie možnosti '-a' príkazu `basename`. Tu sú ako argumenty s príkazom `basename` odovzdané dve cesty k súboru. Každý názov súboru s príponou sa načíta z cesty a vytlačí pomocou nového riadka.

$základné meno -do /Domov/fahmida/index.html/Domov/fahmida/kód/emp.txt

Príklad 3: Použitie možnosti „-z“ a NAME

Voľba „-z“ sa používa s príkazom „basename“ na tlač viacerých názvov súborov s hodnotou null namiesto nového riadka. Nasledujúci príkaz používa dve možnosti spoločne, „-a“ a „-z“. Tu sú dva názvy súborov, index.html a emp.txt vytlačí bez medzery alebo nového riadku.

$základné meno -ten /Domov/fahmida/index.html/Domov/fahmida/kód/emp.txt

Príklad 4: Použitie možnosti „-s“ a NAME

Nasledujúci príkaz môže byť použitý ako alternatíva k SUFFIX s `basename`. Prípona súboru musí vyhovovať možnosti „-sh“, aby sa prípona súboru zo súboru odstránila. Nasledujúci príklad odstráni príponu „-sh“ zo súboru „add.sh“.

$základné meno -s.sh doplnok.sh

Príklad-5: Odstráňte príponu súboru bez SUFFIX

Ak nepoznáte príponu súboru, ktorý chcete odstrániť z názvu súboru, tento príklad vám pomôže vyriešiť problém. Vytvorte súbor s názvom read_file.sh s nasledujúcim kódom na získanie názvu súboru ľubovoľnej prípony. Príkaz `sed` sa v tomto prípade používa na odstránenie akéhokoľvek typu prípony z názvu súboru. Ak spustíte skript, výstup bude „ priemer „Po odstránení rozšírenia“ py '.

read_file.sh

#!/bin/bash
# Nastavte názov súboru s cestou
názov súboru='/home/fahmida/code/average.py'
# Prečítajte si názov súboru bez prípony pomocou príkazov „basname“ a „sed“
zahodil '$ (basename '$ filename' | sed 's/ (.*) ..*/ 1/')'

Spustite skript.

$bashread_file.sh

Príklad-6: Previesť príponu súboru z txt na docx

Názov súboru bez prípony potrebuje súbor previesť z jednej prípony na druhú. Tento príklad ukazuje, že ako môžete zmeniť príponu všetkých textových súborov (.txt) na súbory slov (.docx) pomocou príkazu `basename` v skriptu bash. Vytvorte súbor s názvom, súbor_konvertovať.sh s nasledujúcim kódom. Tu sa slučka for-in používa na čítanie všetkých textových súborov pomocou .TXT prípona z aktuálneho adresára. Názov súboru bez prípony sa číta príkazom `basename` a premenuje sa pridaním prípony .docx v každej iterácii cyklu.

súbor_konvertovať.sh

#!/bin/bash
# slučka prečíta každý textový súbor z aktuálneho adresára
prenázov súboruv ls *.TXT
urobiť
# Pred konverziou vytlačte názov súboru s textom
zahodil „Názov súboru pred konverziou:$ názov súboru'
# Zmeňte príponu súboru txt na docx
mv - '$ názov súboru' '$ (basename - '$ filename' .txt).docx '
hotový

Spustite skript.

$bashsúbor_konvertovať.sh

Pomocou príkazu `ls` skontrolujte, či sú textové súbory konvertované alebo nie.

$ls

Príklad 7: Čítanie názvu súboru bez prípony pomocou rozšírenia parametra Shell

Rozšírenie parametrov shellu je ďalší spôsob, ako čítať názov súboru bez prípony v bash. Tento príklad ukazuje použitie rozšírenia parametrov shellu. Nasledujúci príkaz uloží názov cesty k súboru do premennej $ názov súboru .

$názov súboru='/var/usr/temp/myfile.tar.gz'

Nasledujúci príkaz odstráni všetky typy prípon z cesty a uloží cestu k súboru bez prípony do premennej, $ súbor1 .

$súbor1='$ {názov súboru %%.*}'

Nasledujúci príkaz vytlačí názov súboru iba z cesty. Tu bude výstup „ môj súbor '.

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

Ak názov súboru obsahuje dve prípony s dvoma bodkami (.) A chcete si prečítať názov súboru odstránením poslednej prípony súboru, musíte použiť nasledujúci príkaz. Spustite nasledujúci príkaz, ktorý uloží cestu k súboru do premennej, $ súbor2 odstránením poslednej prípony súboru.

$súbor2='$ {názov súboru%.*}'

Teraz spustite nasledujúci príkaz a vytlačte názov súboru s príponou s jednou bodkou (.). Tu bude výstup myfile.tar.

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

Záver

Názov súboru bez prípony je potrebný na rôzne účely. Niektoré použitia názvu súboru bez prípony sú v tomto návode vysvetlené pomocou niekoľkých príkladov, ako je napríklad konverzia súboru. Tento tutoriál pomôže tým používateľom, ktorí majú záujem, naučiť sa oddeľovať názov súboru a príponu od cesty k súboru. Tu sú vysvetlené dva spôsoby. Používateľ môže nasledujúcim spôsobom extrahovať názov súboru iba z cesty k súboru.