Bash'de uzantısız dosya adını oku

Read Filename Without Extension Bash



Linux kullanıcılarının birçok amaç için düzenli olarak dosyalarla çalışması gerekir. Bazen kullanıcıların dosyanın temel adını yalnızca dosya uzantısını kaldırarak okuması gerekir. Dosya adı ve uzantı, Linux'ta farklı değişkenler üzerinde birçok yolla ayrılabilir ve saklanabilir. Bash yerleşik komutu ve kabuk parametresi genişletmesi, dosyanın uzantısını kaldırmak için kullanılabilir. Uzantısız dosya adının yukarıda belirtilen yöntemlerle nasıl okunacağı bu eğitimde anlatılmaktadır.

Dosya adını okumak için `basename` komutunu kullanma

`basename` komutu, bir dizinden veya dosya yolundan uzantısız dosya adını okumak için kullanılır.







Sözdizimi:



temel adİSİM[SONEKK]

veya



temel adSEÇENEK... İSİM...

Burada NAME, tam yol ile dosya adını veya dosya adını içerebilir. SUFFIX isteğe bağlıdır ve kullanıcının kaldırmak istediği dosya uzantısı bölümünü içerir. `basename` komutu aşağıda açıklanan bazı seçeneklere sahiptir.





Seçenekler

İsim Açıklama
-ile Komut argümanları olarak yollu veya yolsuz birden çok dosya adını iletmek için kullanılır.
-s Kaldırılması gereken uzantıyı sonek olarak geçirmek için kullanılır.
-İle birlikte Her dosyayı null ile ayırarak birden çok dosya adını görüntülemek için kullanılır.
-Yardım Basename komutunun kullanım bilgilerini görüntülemek için kullanılır.
-sürüm Sürüm bilgilerini görüntülemek için kullanılır.

Örnek-1: NAME ve SUFFIX kullanma

Aşağıdaki `basename` komutu, uzantılı dosya adını alacaktır. SUFFIX bu komuttan çıkarılmıştır. Burada, çıktı 'ürün.txt' .



$temel ad /ev/fahmida/kod/ürün.txt

Dosya adını uzantısız olarak almak istiyorsanız, dosya uzantısını 'basename' komutu ile SUFFIX olarak sağlamanız gerekir. Burada uzantı .txt'dir. Uzantıyı dosyadan kaldırmak için aşağıdaki komutu çalıştırın.

$temel ad /ev/fahmida/kod/ürün.txt .txt

Örnek-2: '-a' seçeneğini ve NAME kullanma

Bu örnekte 'basename' komutunun '-a' seçeneğinin kullanımı gösterilmiştir. Burada iki dosya yolu `basename` komutu ile argüman olarak iletilir. Uzantılı her dosya adı yoldan alınır ve yeni satıra göre yazdırılır.

$temel ad -ile /ev/fahmida/index.html/ev/fahmida/kod/em.txt

Örnek-3: '-z' seçeneği ve NAME kullanımı

Birden çok dosya adını satırsonu yerine boş değerle yazdırmak için basename komutuyla birlikte '-z' seçeneği kullanılır. Aşağıdaki komut, '-a' ve '-z' olmak üzere iki seçeneği birlikte kullanır. Burada, iki dosya adı, index.html ve em.txt boşluk veya yeni satır olmadan yazdırılacaktır.

$temel ad -NS /ev/fahmida/index.html/ev/fahmida/kod/em.txt

Örnek-4: '-s' seçeneğini ve NAME kullanma

Aşağıdaki komut, 'basename' ile SUFFIX'in alternatifi olarak kullanılabilir. Dosya uzantısını dosyadan kaldırmak için dosya uzantısının '-sh' seçeneği ile geçmesi gerekir. Aşağıdaki örnek, '-sh' uzantısını 'addition.sh' dosyasından kaldıracaktır.

$temel ad -s.sh ekleme.sh

Örnek-5: SUFFIX olmadan dosya uzantısını kaldırın

Dosya adından kaldırmak istediğiniz dosyanın uzantısını bilmiyorsanız bu örnek sorunu çözmenize yardımcı olacaktır. adlı bir dosya oluşturun read_file.sh herhangi bir uzantının dosya adını almak için aşağıdaki kodla. Bu örnekte dosya adından herhangi bir uzantı türünü kaldırmak için `sed` komutu kullanılmıştır. Komut dosyasını çalıştırırsanız, çıktı ' ortalama ' uzantıyı kaldırdıktan sonra ' p '.

read_file.sh

#!/bin/bash
# Dosya adını yol ile ayarlayın
dosya adı='/home/fahmida/code/average.py'
# 'basname' ve 'sed' komutunu kullanarak dosya adını uzantısız okuyun
dışarı attı '$(taban adı '$dosyaadı' | sed 's/(.*)..*/1/')'

Komut dosyasını çalıştırın.

$bashread_file.sh

Örnek-6: Dosya uzantısını txt'den docx'e dönüştürün

Uzantısız dosya adının dosyayı bir uzantıdan diğerine dönüştürmesi gerekir. Bu örnek, bash betiğinde 'basename' komutunu kullanarak tüm metin dosyalarının (.txt) uzantısını word dosyalarına (.docx) nasıl değiştirebileceğinizi gösterir. adlı bir dosya oluşturun, convert_file.sh aşağıdaki kod ile. Burada, tüm metin dosyalarını okumak için bir for-in döngüsü kullanılır. .txt geçerli dizinden uzantı. Uzantısız dosya adı, 'basename' komutuyla okunur ve döngünün her yinelemesinde .docx uzantısı eklenerek yeniden adlandırılır.

convert_file.sh

#!/bin/bash
# döngü, geçerli dizindeki her metin dosyasını okuyacaktır
içindosya adıiçinde ``ls *.txt``
yapmak
# Dönüştürmeden önce metin dosya adını yazdırın
dışarı attı 'Dönüştürmeden önce dosya adı:$dosya adı'
# txt dosyasının uzantısını docx olarak değiştirin
mv - '$dosya adı' '$(taban adı -- '$dosya adı' .txt).docx'
tamamlamak

Komut dosyasını çalıştırın.

$bashconvert_file.sh

ls komutunu kullanarak metin dosyalarının dönüştürülüp dönüştürülmediğini kontrol edin.

$ls

Örnek-7: Shell parametre genişletmesini kullanarak uzantı olmadan dosya adını okuyun

Kabuk parametresi genişletmesi, dosya adını bash'ta uzantısız okumanın başka bir yoludur. Bu örnek, kabuk parametresi genişletmesinin kullanımlarını gösterir. Aşağıdaki komut, dosya yol adını $ değişkeninde saklayacaktır. dosya adı .

$dosya adı='/var/usr/temp/dosyam.tar.gz'

Aşağıdaki komut, yoldan tüm uzantı türlerini kaldıracak ve dosya yolunu uzantısız değişkende saklayacaktır, $dosya1 .

$dosya1='${dosyaadı%%.*}'

Aşağıdaki komut, dosya adını yalnızca yoldan yazdıracaktır. Burada çıktı, ' dosyam '.

$dışarı attı '${file1##*/}'

Dosya adı iki nokta(.) ile iki uzantı içeriyorsa ve dosyanın son uzantısını kaldırarak dosya adını okumak istiyorsanız, aşağıdaki komutu kullanmanız gerekir. Dosya yolunu değişkene kaydeden aşağıdaki komutu çalıştırın, $ dosya2 dosyanın son uzantısını kaldırarak.

$dosya2='${dosyaadı%.*}'

Şimdi, dosya adını bir nokta (.) uzantılı yazdırmak için aşağıdaki komutu çalıştırın. Burada çıktı olacak dosyam.tar.

$dışarı attı '$ {dosya2 ## * /}'

Çözüm

Uzantısız dosya adı çeşitli amaçlar için gereklidir. Uzantısız dosya adının bazı kullanımları bu öğreticide dosya dönüştürme gibi bazı örnekler kullanılarak açıklanmaktadır. Bu eğitim, dosya adını ve uzantısını dosya yolundan ayırmanın yollarını öğrenmek isteyen kullanıcılara yardımcı olacaktır. Burada iki yol açıklanmıştır. Kullanıcı, dosya adını yalnızca dosya yolundan çıkarmak için bu yollardan herhangi birini izleyebilir.