Cách sử dụng lệnh rename trong Linux
Trong bài này mình sẽ hướng dẫn cách sử dụng lệnh rename trong Linux, đây là lệnh dùng để đổi tên và thư mục trong Linux, bạn có thể đổi tên số lượng lớn.
Đổi tên cho nhiều file và thư mục bằng lệnh mv
là một quá trình rắt rối vì nó liên quan đến các lệnh phức tạp như pipes và các vòng lặp. Nhưng với lệnh rename thì khác, nó đổi tên các file đã cho bằng cách thay thế biểu thức tìm kiếm trong tên bằng từ khóa được chỉ định.
1. Cài đặt rename trong Linux
Lệnh rename có hai phiên bản khác nhau hoàn toàn, khác về cả cú pháp, tính năng và cách sử dụng. Trong bài viết này mình sẽ sử dụng version Perl.
Nếu máy tính của bạn chưa có phiên bản này thì hãy sử dụng lệnh atp để cài đặt nhé.
Bài viết này được đăng tại [free tuts .net]
sudo apt update sudo apt install rename
sudo yum install prename
yay perl-rename
2. Cách sử dụng lệnh rename trong Linux
Sau đây là cú pháp chung của lệnh đổi tên rename.
rename [OPTIONS] perlexpr files
Lệnh rename về cơ bản là một tập lệnh Perl. Nó sẽ đổi tên các file đã cho theo biểu thức chính quy perlexpr được chỉ định. Bạn có thể đọc về biểu thức chính quy Perl tại đây.
Mình cũng có bài viết về cú pháp Regular Expression trong Linux, mời bạn xem qua nhé.
Ví dụ: Lệnh sau sẽ thay đổi phần đuôi mở rộng của tất cả các file .css thành .scss:
rename 's/.css/.scss/' *.css
Hãy giải thích một chút về dòng lệnh này nhé:
's/.css/.scss/'
là toán tử thay thế, nó gồm có ba phần được phân tích thànhs/search_pattern/replacement/
. Trong đó:s
là từ khóa khai báo search.search_pattern
là chuỗi pattern tìm kiếm.replacement
là chuỗi sẽ replace cho pattern tìm kiếm.
- *.css là một lệnh liệt kê tất cả các file kết thúc bằng
.css
.
Trước khi chạy lệnh trên để đổi tên thì bạn hãy xem kỹ lại một lần nữa bằng cách thêm tùy chọn -n, nó sẽ liệt kê những file sẽ được đổi tên, nếu bạn tháy ok thì hãy chạy lại lệnh trên.
rename -n 's/.css/.scss/' *.css
Kết quả sẽ có dạng như sau:
rename(file-0.css, file-0.scss) rename(file-1.css, file-1.scss) rename(file-2.css, file-2.scss) rename(file-3.css, file-3.scss) rename(file-4.css, file-4.scss)
Theo mặc định thì nếu bạn chọn một cái tên đã tồn tại trên hệ thống thì lệnh này sẽ không overwrite lại nội dung của file đó. Nếu bạn muốn overwrite lại thì hãy thêm tùy chọn -f nhé.
rename -f 's/.css/.scss/' *.css
Nếu bạn muốn in kết quả trả về tê những file bị đổi tên thì hãy thêm tùy chọn -v.
file-0.css renamed as file-0.scss file-1.css renamed as file-1.scss file-2.css renamed as file-2.scss file-3.css renamed as file-3.scss file-4.css renamed as file-4.scss
3. Các ví dụ lệnh rename trong Linux
Dưới đây là một vài ví dụ phổ biến về cách sử dụng lệnh rename Linux.
Thay thế khoảng trắng bằng dấu gạch dưới trong tên file:
rename 'y/ /_/' *
Chuyển đổi tên file chữ in thường:
rename 'y/A-Z/a-z/' *
Chuyển đổi tên file thành chữ in hoa:
rename 'y/a-z/A-Z/' *
Xóa chuỗi .bak ở phần cuối cùng của tên file.
rename 's/\.bak$//' *.bak
Chuyển phần mở rộng .jpeg và .JPG thành .jpg.
rename 's/\.jpe?g$/.jpg/i' *
Như vậy lệnh rename thực sự rất hữu ích trong Linux, nó giúp chúng ta đổi tên cho file một cách nhanh chóng và đổi trong số lượng lớn.