Trích xuất tên tệp và phần mở rộng trong Bash

Giới thiệu

Có nhiều lý do khiến bạn muốn trích xuất tên tệp và phần mở rộng của tệp trong Bash:

  • Để thao tác tên tập tin hoặc phần mở rộng – Bạn có thể muốn trích xuất tên tệp hoặc phần mở rộng để sửa đổi nó, chẳng hạn như thêm tiền tố hoặc hậu tố vào tên tệp hoặc thay đổi phần mở rộng tệp.

  • Để tạo một tập tin có tên duy nhất – Bạn có thể muốn trích xuất tên tệp và phần mở rộng để tạo một tệp mới có tên duy nhất, chẳng hạn như bằng cách thêm dấu thời gian hoặc số ngẫu nhiên vào tên tệp.

  • Để sử dụng tên tệp hoặc phần mở rộng trong tập lệnh hoặc lệnh – Bạn có thể muốn trích xuất tên tệp hoặc phần mở rộng để sử dụng nó làm đối số hoặc đầu vào cho tập lệnh hoặc lệnh, chẳng hạn như để chuyển nó vào chương trình hoặc để tạo một tệp có cùng tên với một thư mục.

  • Để trích xuất thông tin từ tên tệp hoặc phần mở rộng – Bạn có thể muốn trích xuất tên tệp hoặc phần mở rộng để trích xuất thông tin từ nó, chẳng hạn như ngày tháng hoặc loại tệp.

Trong bài viết này, chúng ta sẽ xem xét ba cách phổ biến nhất mà bạn có thể trích xuất tên tệp và phần mở rộng tệp trong Bash. Chúng tôi sẽ xem xét từng phương pháp và đưa ra những ưu và nhược điểm để bạn có thể đưa ra quyết định sáng suốt về phương pháp phù hợp nhất với mình.

Cách 1: Sử dụng tên cơ sở Lệnh

Sản phẩm basename lệnh có thể được sử dụng để trích xuất tên tệp và phần mở rộng từ đường dẫn tệp:

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

Mặc dù phương pháp này khá đơn giản và dễ sử dụng, nhưng thật không may, không có cách nào chúng ta có thể trích xuất chỉ tên tệp (không có phần mở rộng) mà không cần xử lý hậu kỳ.

Bạn cũng có thể sử dụng dirname lệnh trích xuất đường dẫn thư mục riêng:

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

Ưu điểm:
  • Đơn giản để sử dụng
  • Xử lý tên tệp có dấu cách một cách chính xác
Nhược điểm:
  • Chỉ trích xuất tên tệp và không thể trích xuất phần mở rộng riêng biệt mà không cần xử lý bổ sung

Phương pháp 2: Sử dụng mở rộng tham số

Bash cung cấp một tính năng gọi là mở rộng tham số, cho phép bạn trích xuất các phần của biến bằng cú pháp đặc biệt. Ví dụ: bạn có thể sử dụng cú pháp sau để trích xuất tên tệp và phần mở rộng từ đường dẫn tệp được lưu trữ trong một biến:

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

Bạn cũng có thể sử dụng tính năng mở rộng tham số để trích xuất phần mở rộng riêng biệt:

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

Ưu điểm:
  • Linh hoạt
  • Có thể trích xuất cả tên tệp và phần mở rộng riêng biệt,
  • Xử lý tên tệp có dấu cách một cách chính xác
Nhược điểm:
  • Yêu cầu một biến để lưu trữ đường dẫn tệp

Cách 3: Sử dụng ôi lệnh

Sản phẩm awk lệnh là một công cụ xử lý văn bản mạnh mẽ có thể được sử dụng để trích xuất các phần của chuỗi. Ví dụ: bạn có thể sử dụng cú pháp sau để trích xuất tên tệp và phần mở rộng từ đường dẫn tệp:

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

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Vous sử dụng pouvez aussi awk để trích xuất phần mở rộng riêng biệt:

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

Ưu điểm:
  • Quyền lực
  • Có thể trích xuất cả tên tệp và phần mở rộng riêng biệt
  • Xử lý tên tệp có dấu cách một cách chính xác
Nhược điểm:
  • Cú pháp có thể xa lạ với một số người dùng
  • Yêu cầu dẫn đường dẫn tệp qua awk

Kết luận

Nhìn chung, việc trích xuất tên tệp và phần mở rộng của tệp trong Bash có thể là một kỹ thuật hữu ích để làm việc với các tệp và thực hiện các tác vụ khác nhau trong shell Bash.

Mỗi phương pháp được đề cập đều có ưu điểm và nhược điểm riêng và sự lựa chọn tốt nhất sẽ phụ thuộc vào nhu cầu và sở thích cụ thể của bạn. Việc làm quen với nhiều cách tiếp cận thường rất hữu ích để bạn có thể chọn cách phù hợp nhất với tình huống của mình.

Dấu thời gian:

Thêm từ xếp chồng lên nhau