Đổi tên tệp là một trong những tác vụ cơ bản nhất bạn thường cần thực hiện trên hệ thống Linux. Bạn có thể đổi tên tệp bằng trình quản lý tệp GUI hoặc thông qua command line trên terminal.
Đổi tên một tệp thì dễ dàng, nhưng đổi tên nhiều tệp cùng một lúc có thể là một thách thức, đặc biệt là đối với người dùng mới làm quen với Linux.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng lệnh mv
và rename
để đổi tên tệp và thư mục.
Đổi tên tệp bằng lệnh mv
Lệnh mv
(viết tắt của move) được sử dụng để đổi tên hoặc di chuyển tập tin từ nơi này đến nơi khác. Cú pháp của mv
như sau:
mv [OPTIONS] source destination
Có source
thể là một hoặc nhiều tệp, hoặc thư mục và destination
có thể là một tệp hoặc thư mục.
- Nếu bạn chỉ định nhiều tệp là
source
, tệpdestination
phải là một thư mục. Trong trường hợp này, cácsource
được chuyển đến thư mục đích. - Nếu bạn chỉ định một tệp là
source
vàdestination
đích là một thư mục hiện có, thì tệp sẽ được chuyển đến thư mục được chỉ định. - Để đổi tên tệp, bạn cần chỉ định một tệp duy nhất làm tệp
source
và một tệp duy nhất làmdestination
đích.
Ví dụ, để đổi tên tệp file1.txt
như file2.txt
bạn sẽ chạy:
mv file1.txt file2.txt
Đổi tên nhiều tệp bằng lệnh mv
Lệnh mv có thể đổi tên chỉ có một tập tin tại một thời điểm, nhưng nó có thể được sử dụng kết hợp với các lệnh khác như find
hay bash bên trong for
hoặc while
vòng để đổi tên nhiều file.
Ví dụ sau đây cho thấy cách sử dụng vòng lặp Bash for để đổi tên tất cả các tệp .html
trong thư mục hiện tại bằng cách thay đổi .html
phần mở rộng thành .php
.
for f in *.html; do mv -- "$f" "${f%.html}.php" done
Hãy phân tích từng dòng code:
- Dòng đầu tiên tạo một vòng lặp
for
và lặp lại qua danh sách tất cả các tệp được biên với.html
. - Dòng thứ hai áp dụng cho từng mục của danh sách và chuyển tệp sang tệp mới thay thế
.html
bằng.php
. Phần${file%.html}
này đang sử dụng phần mở rộng tham số shell để loại bỏ.html
phần đó khỏi tên tệp. done
cho biết sự kết thúc của đoạn vòng lặp.
Dưới đây là một ví dụ sử dụng mv
kết hợp với find
để đạt được điều tương tự như trên:
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;
Lệnh find
được thông qua tất cả các file có đuôi .html
trong thư mục hiện hành để mv
từng người một bằng cách sử dụng tùy chọn -exec
. Chuỗi {}
là tên của tệp hiện đang được xử lý.
Như bạn có thể thấy từ các ví dụ trên, đổi tên nhiều tệp bằng lệnh mv
không phải là một nhiệm vụ dễ dàng vì nó đòi hỏi kiến thức tốt về Bash scripting.
Đổi tên tệp bằng lệnh rename
Lệnh rename
được sử dụng để đổi tên nhiều file. Lệnh này nâng cao hơn mv
vì nó yêu cầu một số kiến thức cơ bản về biểu thức chính quy.
Có hai phiên bản của rename
với cú pháp khác nhau. Trong hướng dẫn này, chúng ta sẽ sử dụng phiên bản Perl của lệnh rename
. Nếu bạn chưa cài đặt phiên bản này trên hệ thống của mình, bạn có thể dễ dàng cài đặt nó bằng cách sử dụng trình quản lý gói của bản phân phối của bạn.
- Cài đặt
rename
trên Ubuntu và Debian
sudo apt install rename
- Cài đặt
rename
trên CentOS và Fedora
sudo yum install prename
- Cài đặt
rename
trên Arch Linux
yay perl-rename ## or yaourt -S perl-rename
Cú pháp của rename
lệnh như sau:
rename [OPTIONS] perlexpr files
Lệnh rename
sẽ đổi tên files
theo quy định perlexpr
biểu thức chính quy. Bạn có thể đọc thêm về biểu thức chính quy perl tại đây .
Ví dụ sau sẽ thay đổi tất cả các tệp có phần mở rộng .html
thành .php
:
rename 's/.html/.php/' \*.html
Bạn có thể sử dụng tùy chọn -n
để in tên các tệp cần đổi tên mà không cần đổi tên chúng.
rename -n 's/.html/.php/' \*.html
Đầu ra sẽ giống như sau:
rename(file-90.html, file-90.php) rename(file-91.html, file-91.php) rename(file-92.html, file-92.php) rename(file-93.html, file-93.php) rename(file-94.html, file-94.php)
Theo mặc định,lệnh rename
không ghi đè lên các tệp hiện có. Chuyển tùy chọn -f
để cho phép các tệp hiện có bị ghi đè:
rename -f 's/.html/.php/' \*.html
Dưới đây là một số ví dụ phổ biến hơn về cách sử dụng rename
- Thay thế khoảng trắng trong tên tệp bằng dấu gạch dưới:
rename 'y/ /\_/' \*
- Chuyển đổi tên tệp thành chữ thường:
rename 'y/A-Z/a-z/' \*
- Chuyển đổi tên tệp thành chữ hoa:
rename 'y/a-z/A-Z/' \*
Phần kết luận
Chúng ta đã tìm hiểu cách sử dụng lệnh mv
và rename
để đổi tên tệp.
Ngoài ra còn có các lệnh khác để đổi tên tệp trong Linux, chẳng hạn như mmv
. Người dùng Linux mới khó dùng lệnh có thể sử dụng các công cụ đổi tên hàng loạt GUI như Métamorphose .
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.