Διαβάστε το όνομα αρχείου χωρίς επέκταση στο Bash

Read Filename Without Extension Bash



Οι χρήστες Linux πρέπει να εργάζονται τακτικά με αρχεία για πολλούς σκοπούς. Μερικές φορές οι χρήστες πρέπει να διαβάσουν το βασικό όνομα του αρχείου μόνο αφαιρώντας την επέκταση αρχείου. Το όνομα αρχείου και η επέκταση μπορούν να διαχωριστούν και να αποθηκευτούν σε διαφορετικές μεταβλητές στο Linux με πολλούς τρόπους. Η ενσωματωμένη εντολή Bash και επέκταση παραμέτρων κελύφους μπορούν να χρησιμοποιηθούν για την αφαίρεση της επέκτασης του αρχείου. Πώς μπορεί να διαβαστεί το όνομα αρχείου χωρίς επέκταση χρησιμοποιώντας τους τρόπους που αναφέρονται παραπάνω, εξηγούνται σε αυτό το σεμινάριο.

Χρησιμοποιώντας την εντολή `basename` για να διαβάσετε το όνομα αρχείου

Η εντολή `basename` χρησιμοποιείται για την ανάγνωση του ονόματος αρχείου χωρίς επέκταση από κατάλογο ή διαδρομή αρχείου.







Σύνταξη:



βασικό όνομαΟΝΟΜΑ[ΚΑΤΑΛΗΞΗ]

ή



βασικό όνομαΕΠΙΛΟΓΗ ... ΟΝΟΜΑ ...

Εδώ, το NAME μπορεί να περιέχει το όνομα αρχείου ή το όνομα αρχείου με πλήρη διαδρομή. Το SUFFIX είναι προαιρετικό και περιέχει το τμήμα επέκτασης αρχείου που θέλει να καταργήσει ο χρήστης. Η εντολή `basename` έχει μερικές επιλογές που περιγράφονται παρακάτω.





Επιλογές

Ονομα Περιγραφή
-προς το Χρησιμοποιείται για να περάσει πολλά ονόματα αρχείων με διαδρομή ή χωρίς διαδρομή ως ορίσματα εντολών.
-μικρό Χρησιμοποιείται για να περάσει την επέκταση ως επίθημα που πρέπει να αφαιρεθεί.
-Με Χρησιμοποιείται για την εμφάνιση των πολλαπλών ονομάτων αρχείων διαχωρίζοντας κάθε αρχείο με null.
-βοήθεια Χρησιμοποιείται για την εμφάνιση των πληροφοριών χρήσης της εντολής `basename`.
-εκδοχή Χρησιμοποιείται για την εμφάνιση των πληροφοριών έκδοσης.

Παράδειγμα-1: Χρήση NAME και SUFFIX

Η ακόλουθη εντολή `basename` θα ανακτήσει το όνομα αρχείου με επέκταση. Το SUFFIX παραλείπεται από αυτήν την εντολή. Εδώ, η έξοδος είναι «Product.txt» Το



$βασικό όνομα /Σπίτι/φαχμιδα/κώδικας/product.txt

Εάν θέλετε να ανακτήσετε το όνομα αρχείου χωρίς επέκταση, τότε πρέπει να παράσχετε την επέκταση αρχείου ως SUFFIX με εντολή `basename`. Εδώ, η επέκταση είναι .txt. Εκτελέστε την ακόλουθη εντολή για να καταργήσετε την επέκταση από το αρχείο.

$βασικό όνομα /Σπίτι/φαχμιδα/κώδικας/product.txt .txt

Παράδειγμα-2: Χρήση της επιλογής ‘-a’ και ΟΝΟΜΑ

Η χρήση της επιλογής '-a' της εντολής 'basename' εμφανίζεται σε αυτό το παράδειγμα. Εδώ, δύο διαδρομές αρχείων περνούν ως ορίσματα με την εντολή `basename`. Κάθε όνομα αρχείου με επέκταση θα ανακτηθεί από τη διαδρομή και θα εκτυπωθεί με νέα γραμμή.

$βασικό όνομα -προς το /Σπίτι/φαχμιδα/index.html/Σπίτι/φαχμιδα/κώδικας/emp.txt

Παράδειγμα-3: Χρήση της επιλογής ‘-z’ και ΟΝΟΜΑ

Η επιλογή '-z' χρησιμοποιείται με την εντολή 'basename' για να εκτυπώσετε τα πολλαπλά ονόματα αρχείων με μηδενική τιμή αντί για νέα γραμμή. Η ακόλουθη εντολή χρησιμοποιεί δύο επιλογές μαζί, ‘-a’ και ‘-z’. Εδώ, δύο ονόματα αρχείων, index.html και emp.txt θα εκτυπωθεί χωρίς κενό ή νέα γραμμή.

$βασικό όνομα -ο /Σπίτι/φαχμιδα/index.html/Σπίτι/φαχμιδα/κώδικας/emp.txt

Παράδειγμα-4: Χρήση της επιλογής ‘-s’ και ΟΝΟΜΑ

Η ακόλουθη εντολή μπορεί να χρησιμοποιηθεί ως εναλλακτική λύση του SUFFIX με `basename`. Η επέκταση αρχείου πρέπει να περάσει με την επιλογή '-sh' για να αφαιρέσετε την επέκταση αρχείου από το αρχείο. Το ακόλουθο παράδειγμα θα καταργήσει την επέκταση, '-sh' από το αρχείο, 'add.sh'.

$βασικό όνομα -μικρό.σ προσθήκη.σ

Παράδειγμα-5: Κατάργηση επέκτασης αρχείου χωρίς SUFFIX

Εάν δεν γνωρίζετε την επέκταση του αρχείου που θέλετε να αφαιρέσετε από το όνομα αρχείου, τότε αυτό το παράδειγμα θα σας βοηθήσει να λύσετε το πρόβλημα. Δημιουργήστε ένα αρχείο με όνομα read_file.sh με τον ακόλουθο κώδικα για ανάκτηση ονόματος αρχείου οποιασδήποτε επέκτασης. Η εντολή `sed` χρησιμοποιείται σε αυτό το παράδειγμα για την κατάργηση κάθε τύπου επέκτασης από το όνομα αρχείου. Εάν εκτελέσετε το σενάριο, η έξοδος θα είναι ' μέση τιμή «Μετά την κατάργηση της επέκτασης» py '.

read_file.sh

#!/bin/bash
# Ορίστε το όνομα αρχείου με διαδρομή
όνομα αρχείου='/home/fahmida/code/average.py'
# Διαβάστε το όνομα αρχείου χωρίς επέκταση χρησιμοποιώντας τις εντολές 'basname' και 'sed'
πέταξε έξω '$ (βασική ονομασία '$ filename' | sed 's/ (.*) ..*/ 1/')'

Εκτελέστε το σενάριο.

$κτυπώ δυνατάread_file.sh

Παράδειγμα-6: Μετατροπή επέκτασης αρχείου από txt σε docx

Το όνομα αρχείου χωρίς επέκταση πρέπει να μετατρέψει το αρχείο από μια επέκταση σε άλλη. Αυτό το παράδειγμα δείχνει ότι πώς μπορείτε να αλλάξετε την επέκταση όλων των αρχείων κειμένου (.txt) σε αρχεία λέξεων (.docx) χρησιμοποιώντας την εντολή `basename` στο σενάριο bash. Δημιουργήστε ένα αρχείο με όνομα, convert_file.sh με τον ακόλουθο κωδικό. Εδώ, ένας βρόχος for-in χρησιμοποιείται για την ανάγνωση όλων των αρχείων κειμένου με .κείμενο επέκταση από τον τρέχοντα κατάλογο. Το όνομα αρχείου χωρίς επέκταση διαβάζεται με την εντολή `basename` και μετονομάζεται προσθέτοντας επέκταση .docx σε κάθε επανάληψη του βρόχου.

convert_file.sh

#!/bin/bash
# ο βρόχος θα διαβάσει κάθε αρχείο κειμένου από τον τρέχοντα κατάλογο
Γιαόνομα αρχείουσε 'ls *.κείμενο'
κάνω
# Εκτυπώστε το όνομα αρχείου κειμένου πριν από τη μετατροπή
πέταξε έξω 'Όνομα αρχείου πριν από τη μετατροπή:$ όνομα αρχείου'
# Αλλάξτε την επέκταση του αρχείου txt σε docx
mv - '$ όνομα αρχείου' '$ (βασική ονομασία - '$ filename' .txt).docx '
Έγινε

Εκτελέστε το σενάριο.

$κτυπώ δυνατάconvert_file.sh

Ελέγξτε ότι τα αρχεία κειμένου έχουν μετατραπεί ή όχι χρησιμοποιώντας την εντολή `ls`.

$ls

Παράδειγμα-7: Διαβάστε το όνομα αρχείου χωρίς επέκταση χρησιμοποιώντας επέκταση παραμέτρων Shell

Η επέκταση παραμέτρων Shell είναι ένας άλλος τρόπος για να διαβάσετε το όνομα αρχείου χωρίς επέκταση στο bash. Αυτό το παράδειγμα δείχνει τις χρήσεις της επέκτασης παραμέτρων κελύφους. Η ακόλουθη εντολή θα αποθηκεύσει το όνομα διαδρομής αρχείου στη μεταβλητή, $ όνομα αρχείου Το

$όνομα αρχείου='/var/usr/temp/myfile.tar.gz'

Η ακόλουθη εντολή θα αφαιρέσει όλους τους τύπους επέκτασης από τη διαδρομή και θα αποθηκεύσει τη διαδρομή αρχείου χωρίς επέκταση στη μεταβλητή, $ file1 Το

$αρχείο 1='$ {όνομα αρχείου %%.*}'

Η ακόλουθη εντολή θα εκτυπώσει το όνομα αρχείου μόνο από τη διαδρομή. Εδώ, η έξοδος θα ‘ myfile '.

$πέταξε έξω '$ {file1 ##*/}'

Εάν το όνομα αρχείου περιέχει δύο επεκτάσεις με δύο τελείες (.) Και θέλετε να διαβάσετε το όνομα αρχείου αφαιρώντας την τελευταία επέκταση του αρχείου, τότε πρέπει να χρησιμοποιήσετε την ακόλουθη εντολή. Εκτελέστε την ακόλουθη εντολή που αποθηκεύει τη διαδρομή του αρχείου στη μεταβλητή, $ file2 αφαιρώντας την τελευταία επέκταση του αρχείου.

$αρχείο 2='$ {όνομα αρχείου%.*}'

Τώρα, εκτελέστε την ακόλουθη εντολή για να εκτυπώσετε το όνομα αρχείου με μια επέκταση με μία κουκκίδα (.). Εδώ, η έξοδος θα είναι myfile.tar.

$πέταξε έξω '$ {file2 ## * /}'

συμπέρασμα

Το όνομα αρχείου χωρίς επέκταση απαιτείται για διάφορους σκοπούς. Ορισμένες χρήσεις του ονόματος αρχείου χωρίς επέκταση εξηγούνται σε αυτό το σεμινάριο χρησιμοποιώντας ορισμένα παραδείγματα, όπως η μετατροπή αρχείων. Αυτό το σεμινάριο θα βοηθήσει τους χρήστες που ενδιαφέρονται να μάθουν τους τρόπους διαχωρισμού του ονόματος και της επέκτασης αρχείου από τη διαδρομή του αρχείου. Δύο τρόποι εξηγούνται εδώ. Ο χρήστης μπορεί να ακολουθήσει οποιονδήποτε από αυτούς τους τρόπους εξαγωγής του ονόματος αρχείου μόνο από τη διαδρομή του αρχείου.