Εξαγωγή ονόματος αρχείου και επέκτασης στο Bash

Εισαγωγή

Υπάρχουν πολλοί λόγοι για τους οποίους μπορεί να θέλετε να εξαγάγετε το όνομα αρχείου και την επέκταση ενός αρχείου στο Bash:

  • Για να χειριστείτε το όνομα ή την επέκταση αρχείου – Μπορεί να θέλετε να εξαγάγετε το όνομα αρχείου ή την επέκταση για να το τροποποιήσετε, όπως να προσθέσετε ένα πρόθεμα ή ένα επίθημα στο όνομα του αρχείου ή να αλλάξετε την επέκταση αρχείου.

  • Για να δημιουργήσετε ένα αρχείο με μοναδικό όνομα – Μπορεί να θέλετε να εξαγάγετε το όνομα αρχείου και την επέκταση για να δημιουργήσετε ένα νέο αρχείο με μοναδικό όνομα, όπως προσθέτοντας μια χρονική σήμανση ή έναν τυχαίο αριθμό στο όνομα του αρχείου.

  • Για να χρησιμοποιήσετε το όνομα ή την επέκταση αρχείου σε ένα σενάριο ή εντολή – Μπορεί να θέλετε να εξαγάγετε το όνομα αρχείου ή την επέκταση για να το χρησιμοποιήσετε ως όρισμα ή είσοδο για ένα σενάριο ή εντολή, όπως για να το μεταβιβάσετε σε ένα πρόγραμμα ή να δημιουργήσετε ένα αρχείο με το ίδιο όνομα ως κατάλογο.

  • Για να εξαγάγετε πληροφορίες από το όνομα ή την επέκταση αρχείου – Μπορεί να θέλετε να εξαγάγετε το όνομα αρχείου ή την επέκταση για να εξαγάγετε πληροφορίες από αυτό, όπως την ημερομηνία ή τον τύπο αρχείου.

Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στους τρεις πιο συνηθισμένους τρόπους με τους οποίους μπορείτε να εξαγάγετε όνομα αρχείου και επέκταση αρχείου στο Bash. Θα ρίξουμε μια ματιά σε καθένα από αυτά και θα σας δώσουμε τα πλεονεκτήματα και τα μειονεκτήματα, ώστε να μπορέσετε να πάρετε μια ενημερωμένη απόφαση σχετικά με την προσέγγιση που σας ταιριάζει καλύτερα.

Μέθοδος 1: Χρησιμοποιώντας το βασικό όνομα εντολή

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

filename=$(basename /path/to/file.txt)
echo $filename

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

Μπορείτε επίσης να χρησιμοποιήσετε το dirname εντολή για την εξαγωγή της διαδρομής καταλόγου ξεχωριστά:

directory=$(dirname /path/to/file.txt)
echo $directory

Πλεονεκτήματα:
  • Απλό στη χρήση
  • Χειρίζεται σωστά τα ονόματα αρχείων με κενά
Μειονεκτήματα:
  • Εξάγει μόνο το όνομα αρχείου και δεν μπορεί να εξαγάγει την επέκταση ξεχωριστά χωρίς πρόσθετη επεξεργασία

Μέθοδος 2: Χρήση επέκτασης παραμέτρων

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

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

Μπορείτε επίσης να χρησιμοποιήσετε την επέκταση παραμέτρου για να εξαγάγετε την επέκταση ξεχωριστά:

extension=${filename##*.}
echo $extension

Πλεονεκτήματα:
  • Ευέλικτο
  • Μπορεί να εξαγάγει και το όνομα και την επέκταση ξεχωριστά,
  • Χειρίζεται σωστά τα ονόματα αρχείων με κενά
Μειονεκτήματα:
  • Απαιτεί μια μεταβλητή για την αποθήκευση της διαδρομής του αρχείου

Μέθοδος 3: Χρησιμοποιώντας το awk εντολή

Η awk Η εντολή είναι ένα ισχυρό εργαλείο επεξεργασίας κειμένου που μπορεί να χρησιμοποιηθεί για την εξαγωγή τμημάτων μιας συμβολοσειράς. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνταξη για να εξαγάγετε το όνομα αρχείου και την επέκταση από μια διαδρομή αρχείου:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!

Μπορείτε επίσης να χρησιμοποιήσετε awk για να εξαγάγετε την επέκταση ξεχωριστά:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Πλεονεκτήματα:
  • Ισχυρός
  • Μπορεί να εξαγάγει ξεχωριστά τόσο το όνομα αρχείου όσο και την επέκταση
  • Χειρίζεται σωστά τα ονόματα αρχείων με κενά
Μειονεκτήματα:
  • Η σύνταξη μπορεί να είναι άγνωστη σε ορισμένους χρήστες
  • Απαιτεί διοχέτευση της διαδρομής του αρχείου awk

Συμπέρασμα

Συνολικά, η εξαγωγή του ονόματος αρχείου και της επέκτασης ενός αρχείου στο Bash μπορεί να είναι μια χρήσιμη τεχνική για την εργασία με αρχεία και την εκτέλεση διαφόρων εργασιών στο κέλυφος του Bash.

Κάθε μία από τις παραπάνω μεθόδους έχει τα δικά της πλεονεκτήματα και μειονεκτήματα και η καλύτερη επιλογή θα εξαρτηθεί από τις συγκεκριμένες ανάγκες και προτιμήσεις σας. Συχνά είναι χρήσιμο να είστε εξοικειωμένοι με πολλαπλές προσεγγίσεις, ώστε να μπορείτε να επιλέξετε αυτή που είναι πιο κατάλληλη για την περίπτωσή σας.

Σφραγίδα ώρας:

Περισσότερα από Stackabuse