Cara Memisahkan Nama File dan Ekstensi di Bash

Bash

Perkenalan:

Saat bekerja dengan file di Bash, Anda mungkin sering kali perlu memisahkan nama file dari ekstensinya. Pendekatan umum menggunakan perintah `cut`, namun metode ini bisa gagal dengan nama file yang berisi beberapa titik.

Misalnya, nama file seperti `a.b.js` akan salah dipecah menjadi `a` dan `b.js`, bukan `a.b` dan `js`. Meskipun Python memberikan solusi mudah dengan `os.path.splitext()`, menggunakan Python mungkin tidak selalu menjadi pilihan yang paling efisien. Artikel ini membahas metode yang lebih baik untuk mencapai tugas ini di Bash.

Memerintah Keterangan
${variable%.*} Perluasan parameter untuk menghapus ekstensi dari nama file.
${variable##*.} Perluasan parameter untuk mengekstrak ekstensi dari nama file.
awk -F. Menyetel pemisah bidang ke titik, digunakan untuk membagi nama file.
OFS="." Pemisah bidang keluaran di awk, digunakan untuk merekonstruksi nama file tanpa ekstensi.
NF-- Mengurangi jumlah bidang sebanyak satu di awk, secara efektif menghapus ekstensi.
${BASH_REMATCH} Array yang menyimpan kecocokan dari ekspresi reguler di Bash.
local variable Mendeklarasikan variabel dengan cakupan lokal dalam suatu fungsi di Bash.

Perincian Terperinci dari Solusi Bash

Skrip yang disediakan menawarkan berbagai metode untuk memisahkan nama file dan ekstensinya di Bash. Skrip pertama menggunakan perluasan parameter Bash. Variabel menghapus ekstensi dengan menghapus semuanya dari titik terakhir hingga akhir string, sementara menangkap ekstensi dengan mengambil semuanya setelah periode terakhir. Metode ini mudah dan efisien untuk sebagian besar struktur nama file. Skrip kedua menggunakan , alat pemrosesan teks yang kuat di lingkungan mirip Unix. Dengan mengatur pemisah bidang ke titik menggunakan -F., ini memungkinkan untuk membagi nama file menjadi beberapa bagian. Pemisah bidang keluaran, , dan mengurangi jumlah bidang dengan adalah teknik untuk memasang kembali nama file tanpa ekstensinya.

Skrip ketiga menggunakan ekspresi reguler di Bash, memanfaatkan untuk menangkap grup dalam pertandingan regex. Skrip ini menggunakan pola yang membagi nama file menjadi dua kelompok: satu untuk nama dasar dan satu lagi untuk ekstensi. Terakhir, skrip fungsi kustom merangkum logika perluasan parameter dalam suatu fungsi, sehingga meningkatkan penggunaan kembali dan keterbacaan kode. Ini menggunakan deklarasi untuk menjaga cakupan variabel dalam fungsi, mencegah efek samping yang tidak diinginkan dalam skrip yang lebih besar. Setiap metode menunjukkan pendekatan berbeda untuk memecahkan masalah yang sama, menunjukkan keserbagunaan dan kekuatan skrip Bash.

Menggunakan Ekspansi Parameter di Bash

Skrip bash

#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Menggunakan Awk untuk Memisahkan Nama File dan Ekstensi

Pesta dengan Awk

#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Menggunakan Ekspresi Reguler di Bash

Skrip bash dengan regex

#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Menggunakan Fungsi Kustom di Bash

Skrip Bash dengan fungsi khusus

#!/bin/bash
# Function to extract filename and extension
extract_filename_extension() {
  local file="$1"
  echo "Filename: ${file%.*}"
  echo "Extension: ${file##*.}"
}
# Call the function with a file
extract_filename_extension "a.b.js"

Menjelajahi Metode Alternatif untuk Manipulasi File di Bash

Di luar metode yang telah dibahas, ada teknik lain yang berguna di Bash untuk memanipulasi nama file dan ekstensi. Salah satu metode tersebut melibatkan penggunaan Dan perintah. dapat digunakan untuk mengekstrak nama file dari suatu jalur, sementara dirname mengambil jalur direktori. Menggabungkan perintah-perintah ini dengan perluasan parameter dapat secara efektif memisahkan nama file dan ekstensi. Misalnya saja menggunakan menghapus ekstensi dari nama file. Pendekatan ini sangat berguna ketika bekerja dengan jalur file lengkap, bukan hanya nama file.

Metode lain melibatkan penggunaan , editor aliran yang canggih untuk memfilter dan mengubah teks. Dengan menyusun ekspresi reguler yang sesuai, dapat mengisolasi nama file dan ekstensi. Misalnya perintah membagi nama file dan ekstensi, menempatkannya dalam grup pengambilan terpisah. Teknik ini fleksibel dan dapat menangani struktur nama file yang kompleks. Menjelajahi alat dan metode tambahan ini memperluas kemampuan Anda untuk memanipulasi data file di Bash, memberikan solusi tangguh untuk berbagai skenario skrip.

Pertanyaan Umum tentang Manipulasi File Bash

  1. Apa tujuan dari memerintah?
  2. Ini menghapus ekstensi dari nama file dengan menghapus semuanya setelah titik terakhir.
  3. Bagaimana perintah bekerja?
  4. Itu mengekstrak ekstensi dengan mengambil semuanya setelah titik terakhir dalam nama file.
  5. Apa artinya? lakukan dalam skrip yang disediakan?
  6. Ini mengatur pemisah bidang ke suatu titik, memungkinkan nama file dipecah menjadi beberapa bagian.
  7. Mengapa menggunakan dalam sebuah naskah?
  8. Ini mengurangi jumlah bidang sebanyak satu, secara efektif menghapus ekstensi dari nama file.
  9. Bagaimana ekspresi reguler membantu dalam mengekstraksi nama file dan ekstensi?
  10. Mereka memungkinkan pencocokan pola dan pengelompokan, yang dapat mengisolasi bagian-bagian berbeda dari nama file.
  11. Apa manfaat menggunakan fungsi khusus di Bash?
  12. Fungsi khusus meningkatkan penggunaan kembali dan keterbacaan kode, menjadikan skrip lebih modular.
  13. Bagaimana bantuan dengan nama file?
  14. Ini mengekstrak nama file dari jalur file lengkap, secara opsional menghapus ekstensi.
  15. Bisa digunakan untuk manipulasi nama file?
  16. Ya, dapat menggunakan ekspresi reguler untuk mengubah dan mengisolasi bagian nama file.

Menyelesaikan Solusi untuk Ekstraksi Nama File dan Ekstensi

Kesimpulannya, mengekstraksi nama file dan ekstensi di Bash dapat dilakukan secara efektif melalui berbagai metode, masing-masing disesuaikan dengan kebutuhan dan preferensi berbeda. Baik menggunakan perluasan parameter, awk, sed, atau fungsi kustom, teknik ini menawarkan solusi yang fleksibel dan efisien. Memahami dan menggunakan perintah ini memastikan bahwa skrip dapat menangani nama file dengan banyak periode dan kompleksitas lainnya tanpa kesalahan.