Đọc tên tệp không có phần mở rộng trong Bash

Read Filename Without Extension Bash



Người dùng Linux cần làm việc với các tệp thường xuyên cho nhiều mục đích. Đôi khi người dùng chỉ cần đọc tên cơ sở của tệp bằng cách xóa phần mở rộng tệp. Tên tệp và phần mở rộng có thể được tách biệt và lưu trữ trên các biến khác nhau trong Linux bằng nhiều cách. Lệnh tích hợp sẵn Bash và mở rộng tham số shell có thể được sử dụng để xóa phần mở rộng của tệp. Cách tên tệp không có phần mở rộng có thể được đọc bằng cách sử dụng các cách đã đề cập ở trên được giải thích trong hướng dẫn này.

Sử dụng lệnh `basename` để đọc tên tệp

Lệnh `basename` được sử dụng để đọc tên tệp không có phần mở rộng từ thư mục hoặc đường dẫn tệp.







Cú pháp:



tên cơ sởTÊN[SUFFIX]

hoặc



tên cơ sởTÙY CHỌN ... TÊN ...

Ở đây, NAME có thể chứa tên tệp hoặc tên tệp với đường dẫn đầy đủ. SUFFIX là tùy chọn và nó chứa phần mở rộng tệp mà người dùng muốn loại bỏ. Lệnh `basename` có một số tùy chọn được mô tả bên dưới.





Tùy chọn

Tên Sự miêu tả
-đến Nó được sử dụng để chuyển nhiều tên tệp có đường dẫn hoặc không có đường dẫn làm đối số lệnh.
-NS Nó được sử dụng để chuyển phần mở rộng làm hậu tố cần loại bỏ.
-Với Nó được sử dụng để hiển thị nhiều tên tệp bằng cách tách từng tệp bằng null.
-Cứu giúp Nó được sử dụng để hiển thị thông tin sử dụng lệnh `basename`.
-phiên bản Nó được sử dụng để hiển thị thông tin phiên bản.

Ví dụ-1: Sử dụng NAME và SUFFIX

Lệnh `basename` sau đây sẽ truy xuất tên tệp có phần mở rộng. SUFFIX bị bỏ qua khỏi lệnh này. Đây, đầu ra là ‘Product.txt’ .



$tên cơ sở /Trang Chủ/fahmida/mã số/product.txt

Nếu bạn muốn truy xuất tên tệp không có phần mở rộng, thì bạn phải cung cấp phần mở rộng tệp là SUFFIX bằng lệnh `basename`. Ở đây, phần mở rộng là .txt. Chạy lệnh sau để xóa phần mở rộng khỏi tệp.

$tên cơ sở /Trang Chủ/fahmida/mã số/product.txt .txt

Ví dụ-2: Sử dụng tùy chọn ‘-a’ và NAME

Việc sử dụng tùy chọn ‘-a’ của lệnh `basename` được hiển thị trong ví dụ này. Ở đây, hai đường dẫn tệp được chuyển dưới dạng đối số với lệnh `basename`. Mỗi tên tệp có phần mở rộng sẽ truy xuất từ ​​đường dẫn và in theo dòng mới.

$tên cơ sở -đến /Trang Chủ/fahmida/index.html/Trang Chủ/fahmida/mã số/emp.txt

Ví dụ-3: Sử dụng tùy chọn ‘-z’ và NAME

Tùy chọn ‘-z’ được sử dụng với lệnh `basename` để in nhiều tên tệp có giá trị null thay vì dòng mới. Lệnh sau sử dụng hai tùy chọn cùng nhau, ‘-a’ và ‘-z’. Đây, hai tên tệp, index.htmlemp.txt sẽ in mà không có bất kỳ khoảng trống hoặc dòng mới.

$tên cơ sở -NS /Trang Chủ/fahmida/index.html/Trang Chủ/fahmida/mã số/emp.txt

Ví dụ-4: Sử dụng tùy chọn ‘-s’ và NAME

Lệnh sau có thể được sử dụng thay thế cho SUFFIX bằng `basename`. Phần mở rộng tệp cần chuyển với tùy chọn ‘-sh’ để xóa phần mở rộng tệp khỏi tệp. Ví dụ sau sẽ xóa phần mở rộng, ‘-sh’ khỏi tệp, ‘add.sh’.

$tên cơ sở -NS.sh bổ sung.sh

Ví dụ-5: Xóa phần mở rộng tệp mà không có SUFFIX

Nếu bạn không biết phần mở rộng của tệp mà bạn muốn xóa khỏi tên tệp, thì ví dụ này sẽ giúp bạn giải quyết vấn đề. Tạo một tệp có tên read_file.sh với mã sau để truy xuất tên tệp của bất kỳ phần mở rộng nào. Lệnh `sed` được sử dụng trong ví dụ này để xóa bất kỳ loại phần mở rộng nào khỏi tên tệp. Nếu bạn chạy tập lệnh, đầu ra sẽ là ‘ Trung bình 'Sau khi xóa phần mở rộng' py '.

read_file.sh

#! / bin / bash
# Đặt tên tệp bằng đường dẫn
tên tập tin='/home/fahmida/code/average.py'
# Đọc tên tệp không có phần mở rộng bằng cách sử dụng lệnh ‘basname’ và `sed`
quăng đi '$ (basename '$ filename' | sed 's / (. * ) .. * / 1 / ')'

Chạy tập lệnh.

$bấu víuread_file.sh

Ví dụ-6: Chuyển đổi phần mở rộng tệp từ txt sang docx

Tên tệp không có phần mở rộng cần phải chuyển đổi tệp từ phần mở rộng này sang phần mở rộng khác. Ví dụ này cho thấy cách bạn có thể thay đổi phần mở rộng của tất cả các tệp văn bản (.txt) thành tệp từ (.docx) bằng cách sử dụng lệnh `basename` trong tập lệnh bash. Tạo một tệp có tên, convert_file.sh với đoạn mã sau. Ở đây, một vòng lặp for-in được sử dụng để đọc tất cả các tệp văn bản với .txt phần mở rộng từ thư mục hiện tại. Tên tệp không có phần mở rộng được đọc bằng lệnh `basename` và được đổi tên bằng cách thêm phần mở rộng .docx trong mỗi lần lặp lại của vòng lặp.

convert_file.sh

#! / bin / bash
# vòng lặp sẽ đọc từng tệp văn bản từ thư mục hiện tại
tên tập tintrong ``ls *.txt``
làm
# In tên tệp văn bản trước khi chuyển đổi
quăng đi 'Tên tệp trước khi chuyển đổi:$ filename'
# Thay đổi phần mở rộng của tệp txt thành docx
mv - '$ filename' '$ (basename - '$ filename' .txt).docx '
xong

Chạy tập lệnh.

$bấu víuconvert_file.sh

Kiểm tra các tệp văn bản đã được chuyển đổi hay chưa bằng cách sử dụng lệnh `ls`.

$ls

Ví dụ-7: Đọc tên tệp không có phần mở rộng bằng cách sử dụng mở rộng tham số Shell

Mở rộng tham số Shell là một cách khác để đọc tên tệp không có phần mở rộng trong bash. Ví dụ này cho thấy việc sử dụng mở rộng tham số shell. Lệnh sau sẽ lưu trữ tên đường dẫn tệp trong biến, $ tên tập tin .

$tên tập tin='/var/usr/temp/myfile.tar.gz'

Lệnh sau sẽ xóa tất cả các loại phần mở rộng khỏi đường dẫn và lưu trữ đường dẫn tệp không có phần mở rộng trong biến, $ file1 .

$file1='$ {filename %%. *}'

Lệnh sau sẽ chỉ in tên tệp từ đường dẫn. Ở đây, đầu ra sẽ ‘ tập tin của tôi '.

$quăng đi '$ {file1 ## * /}'

Nếu tên tệp chứa hai phần mở rộng có hai dấu chấm (.) Và bạn muốn đọc tên tệp bằng cách xóa phần mở rộng cuối cùng của tệp thì bạn phải sử dụng lệnh sau. Chạy lệnh sau để lưu trữ đường dẫn tệp vào biến, $ file2 bằng cách xóa phần mở rộng cuối cùng của tệp.

$file2='$ {tên tệp%. *}'

Bây giờ, hãy chạy lệnh sau để in tên tệp có phần mở rộng là một dấu chấm (.). Ở đây, đầu ra sẽ là myfile.tar.

$quăng đi '$ {file2 ## * /}'

Phần kết luận

Tên tệp không có phần mở rộng được yêu cầu cho các mục đích khác nhau. Một số cách sử dụng tên tệp không có phần mở rộng được giải thích trong hướng dẫn này bằng cách sử dụng một số ví dụ như chuyển đổi tệp. Hướng dẫn này sẽ giúp những người dùng quan tâm tìm hiểu cách tách tên tệp và phần mở rộng khỏi đường dẫn tệp. Hai cách được giải thích ở đây. Người dùng có thể làm theo bất kỳ cách nào sau đây để chỉ trích xuất tên tệp từ đường dẫn tệp.