NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
25/04/2024
Lượt xem

Hướng dẫn rename file trong Linux bằng lệnh đơn giản

25/04/2024
9 phút đọc
Lượt xem

Đánh giá

5/5 - (186 bình chọn)

Linux cung cấp nhiều cơ chế khác nhau để đổi tên file qua GUI lẫn terminal, đồng thời còn cho phép đổi tên nhiều file cùng một lúc. Bài viết này sẽ hướng dẫn các cách rename file trong Linux đơn giản nhất.

Rename file trong Linux bằng lệnh mv

Lệnh mv (move) trong Linux được dùng để di chuyển file và thư mục thông qua terminal. Cú pháp của lệnh như sau:

mv [options] [nguồn] [đích]

Nếu đích là một thư mục thì lệnh mv sẽ di chuyển file đến thư mục đó. Mặt khác, nếu đích là tên một file khác thì lệnh sẽ rename file thành tên tương ứng.

Rename một file bằng lệnh mv

Cú pháp mặc định của mv cho phép ta rename một file:

mv [options] [tên file hiện tại] [tên file mới]

Chẳng hạn ta cần đổi tên file example1.txt thành example2.txt thì câu lệnh sẽ như sau:

mv example1.txt example2.txt

Lưu ý rằng lệnh này không có output gì khi thực hiện thành công, nên ta có thể dùng lệnh ls để kiểm tra xem file đã được đổi tên thành công chưa:

ls -l
Rename một file bằng lệnh mv
Rename một file bằng lệnh mv

Rename nhiều file bằng lệnh mv

Về bản chất thì mv chỉ cho phép rename một file, nhưng ta hoàn toàn có thể kết hợp nó với những câu lệnh khác để đổi tên nhiều file cùng một lúc.

Cách thứ nhất, ta có thể dùng lệnh find để chọn nhiều file có tên giống nhau, rồi áp dụng lệnh mv để rename cùng một lúc:

find . -depth -name "[phần tử tên file hiện tại]" -exec sh -c 'f="{}"; mv -- "$f" "${f%[phần tử tên file hiện tại]}[phần tử tên file mới]"' \;

Trong cú pháp trên, lệnh find định nghĩa một phần tử là tên file hiện tại, có vai trò như một tham số để tìm kiếm. Tiếp theo, -exec sẽ thực thi lệnh mv lên mọi file khớp với lệnh tìm kiếm và thực hiện rename file trong Linux.

Chẳng hạn ta có các file example1.txt, example2.txt, example3.txt và muốn đổi phần mở rộng thành .pdf:

find . -depth -name "*.txt" -exec sh -c 'f="{}"; mv -- "$f" "${f%.txt}.pdf"' \;

Kết quả:

Rename nhiều file bằng lệnh mv
Rename nhiều file bằng lệnh mv

Cách thứ hai, ta có thể dùng lệnh mv bên trong vòng lặp <strong>for</strong> trong bash script.

Quay lại ví dụ ở trên, trước tiên ta cần tạo và mở một file bash script (có thể mở bằng Nano):

sudo nano rename_files.sh

Thêm các dòng sau vào script:

#!/bin/bash for f in *.txt; do mv -- "$f" "${f%.txt}.pdf" done

Trong đó:

  • Dòng đầu tiên yêu cầu script tìm kiếm mọi file trong directory hiện tại, có đuôi là .txt.
  • Dòng thứ hai áp dụng lệnh mv lên mọi file rồi thay phần mở rộng .txt thành .pdf.
  • Dòng thứ ba kết thúc vòng lặp.

Sau đó nhấn Ctrl+X, nhập Y rồi nhấn Enter để lưu lại thay đổi trong script và thoát file.

Bây giờ dùng lệnh sh để thực thi script:

sh rename_files.sh

Rename file trong Linux bằng lệnh rename

Lệnh rename được dùng để rename nhiều file hoặc directory trong Linux, cung cấp nhiều tính năng hơn lệnh mv thuần tuý nhưng có thể khó sử dụng hơn một chút vì cần có kiến thức liên quan đến biểu thức trong Perl.

Cách cài đặt lệnh rename

Trên một số bản phân phối Linux thì lệnh rename không có sẵn, khi đó bạn có thể cài đặt như sau:

Cú pháp và tuỳ chọn trong lệnh rename

Có ba loại biểu thức chính quy trong Perl: match (khớp), substitute (thay thế) và translate (dịch). Lệnh rename sử dụng substitute và translate để đổi tên file và thư mục.

Biểu thức substitute có khả năng thay một phần của tên file thành một xâu khác, dựa theo cú pháp sau:

rename [options] 's/[phần tử tên file]/[xâu thay thế]/' [filename]

Câu lệnh trên rename file bằng cách thay thế phần tử tên file bằng xâu thay thế (chỉ thay thế chuỗi đầu tiên khớp được):

  • rename: gọi lệnh rename
  • [options]: các đối số tuỳ chọn, ảnh hưởng đến cách thực thi lệnh
  • s: biểu thức substitute
  • [phần tử tên file]: bộ phận của tên cần thay thế
  • [xâu thay thế]: xâu để thay thế cho bộ phận của tên khớp được
  • [filename]: tên của file cần rename

Biểu thức translate có khả năng dịch một chuỗi ký tự thành một chuỗi khác (dịch từng ký tự). Cú pháp:

rename [options] 'y/[string 1]/[string 2]/' [filename]

Ví dụ:

rename 'y/abc/xyz/'

Ở lệnh trên, mọi ký tự a trong tên file sẽ được thay thế bằng x, mọi ký tự b được thay thành y, và mọi ký tự c được thay bằng z.

Lệnh rename có những option như sau:

  • -a: Thay mọi xâu khớp được của phần tử tên file (thay vì chỉ thay thế xâu đầu tiên)
  • -f: Ghi đè file hiện tại
  • -h: Hiển thị hỗ trợ, hướng dẫn
  • -i: Hiển thị thông báo trước khi ghi đè file
  • -l: Thay thế xâu cuối cùng khớp được của phần tử tên file (thay vì chỉ xâu đầu tiên)
  • -n: Chỉ chạy thử, không thay đổi vĩnh viễn
  • -v: Hiển thị output đầy đủ (verbose)
  • -V: Hiển thị phiên bản lệnh

Các ví dụ với lệnh rename

Đổi phần mở rộng của file

Quay trở lại ví dụ trước, để đổi phần mở rộng từ .txt sang .pdf ta có thể dùng:

rename -v 's/.txt/.pdf/' *.txt
Đổi phần mở rộng của file
Đổi phần mở rộng của file

Thay đổi một phần của tên file

Việc thay đổi một phần của tên file cũng có cú pháp tương tự ở trên. Để đổi example1.txt, example2.txt example3.txt thành test1.txt, test2.txt test3.txt ta làm như sau:

rename -v 's/example/test/' *.txt
Thay đổi một phần của tên file
Thay đổi một phần của tên file

Xoá một phần của tên file

Các option của rename cho phép ta xoá một phần của tên file bằng cách bỏ phần thay thế trong biểu thức. Chẳng hạn ta cần đổi example thành ex:

rename -v 's/ample//' *.txt

Rename nhiều file có tên giống nhau

Ta cũng có thể rename nhiều file một lúc bằng lệnh rename như sau:

rename -v 's/(ex|s)ample/test/' *.txt

Mọi file có tên dạng examplesample đều được đổi thành test.

Rename nhiều file có tên giống nhau
Rename nhiều file có tên giống nhau

Rename file theo từng ký tự

Lệnh rename cũng cho phép dùng biểu thức translate để đổi tên file theo từng ký tự. Chẳng hạn ta muốn rename nhiều file có tên example file, thay khoảng trắng thành dấu _:

rename -v 'y/ /\_/' *.txt
Rename file theo từng ký tự
Rename file theo từng ký tự

Đổi sang ký tự in thường

Để đổi ký tự in hoa thành in thường trong tên file:

rename -v 'y/a-z/A-Z/' *.txt
Đổi sang ký tự in thường
Hướng dẫn rename file trong Linux bằng lệnh đơn giản 16

Đổi sang ký tự in hoa

Ngược lại, để đổi sang in hoa:

rename -v 'y/A-Z/a-z/' *.TXT

Kết luận

Qua bài viết này, ta đã biết được nhiều cách khác nhau để rename file trong Linux, chủ yếu bằng hai lệnh mvrename. Ngoài ra Linux còn cho phép đổi tên nhiều file cùng một lúc bằng cách kết hợp một số câu lệnh đơn giản với nhau hoặc dùng lệnh rename. Chúc các bạn thành công!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG