Hệ điều hành dựa trên Debian
Debian và các bản phân phối tương tự như Ubuntu và Linux Mint có một công cụ dòng lệnh được xây dựng trong các tệp đổi tên hàng loạt. ‘rename’, được cung cấp trên một số OSes dựa trên Debian, là một trong những công cụ đổi tên mạnh mẽ nhất trên Linux. Rename hoạt động rất giống với cách ‘sed’ hoạt động – đó là bản chất của tiện ích sed cho tên tập tin. Nó cũng có thể sử dụng biểu thức Perl, vì vậy nếu bạn có một số kiến thức về Perl, tiện ích này sẽ làm việc kỳ diệu cho bạn.
Quan trọng: Một số hệ điều hành dựa trên Debian có ‘rename’ được cài đặt có thể thực sự có phiên bản ‘rename’ từ gói ‘util-linux’. Phiên bản util-linux này là một phiên bản đơn giản hơn của ‘rename’ mà không có nhiều tính năng như phiên bản trên Debian và Ubuntu.
Thay đổi tên tệp cơ bản
Bạn có thể tìm và thay thế văn bản trong tên tập tin bằng cách thực hiện lệnh sau. Đảm bảo thay đổi các giá trị của ‘search’ và ‘replace’ sang các chuỗi văn bản bạn muốn ảnh hưởng. Hãy nhớ rằng ký tự đại diện có sẵn bên trong trường tìm kiếm. Lưu ý: Bạn có thể sử dụng tùy chọn -n để thực hiện ‘dry run’ đầu tiên, mà không ảnh hưởng đến tên tập tin của bạn. Tùy chọn -v làm cho tất cả các hoạt động.
Thí dụ:
rename -v 's/search/replace/' *
Thay đổi loại tệp
Bạn cũng có thể đổi tên loại tệp của một số tệp bằng cách sử dụng phương pháp này – chỉ cần thay thế ‘search’ và ‘replace’ bằng loại tệp hiện tại và mới. Lưu ý: Đừng quên thêm dấu gạch chéo ngược trước tệp tin của bạn, nếu không lệnh sẽ không hoạt động.
Thí dụ:
rename -v 's/\.search/\.replace/' *
Thêm các lệnh nâng cao
Nếu bạn muốn đổi tên các tập tin và có một số incrementing ở cuối của tên tập tin, điều này có thể được thực hiện cũng như với một số Perl:
rename -v 's/search/our $i; sprintf("replace%03d.txt", 1+$i++)/e' * e '*
Lý do cho ‘% 03d’ trong lệnh này là để mô tả số lượng số 0 chúng ta muốn ở phía trước số của chúng ta. Điều này được sử dụng để giữ các tập tin theo thứ tự khi phân loại các tập tin theo bảng chữ cái. ‘sprintf’ thực sự là một chức năng từ Perl, được sử dụng để định dạng tên. Điều này cho thấy một trong những thế mạnh của phiên bản này của đổi tên. Đây là một ví dụ.
Các tập tin:
file1
file2
Command:
rename -v 's/file*/our $i; sprintf("name%03d.txt", 1+$i++)/e' *
Kết quả:
name001
name002
Và trong trường hợp bạn cần một định dạng cụ thể cho tên tập tin của bạn, có rất nhiều kịch bản Perl có sẵn trực tuyến để đổi tên các tập tin trong tất cả các loại định dạng.
Hệ điều hành dựa trên RHEL
RedHat Enterprise Linux và các bản phân phối có liên quan như CentOS cũng có phiên bản ‘rename’ được cài đặt theo mặc định. Đây là biến thể ‘util-linux’, có nghĩa là nó không phải là giàu tính năng như một hệ thống được cài đặt trên hầu hết các hệ thống dựa trên Debian.
Thay đổi tên tệp cơ bản
Cho đến khi phiên bản util-linux đổi tên, tất cả những gì nó thực hiện là các thao tác tìm kiếm và thay thế đơn giản trên các tên tập tin. Bạn nhập chuỗi bạn đang tìm kiếm trong tệp của bạn, sau đó bạn nhập chuỗi bạn muốn thay thế chuỗi tìm kiếm bằng.
rename "search" "replace" *
Đây là tất cả các chức năng có sẵn với tiện ích đổi tên được xây dựng trong các hệ thống dựa trên RHEL. Nếu bạn cần phải nâng cấp cao hơn, bash kịch bản bằng cách sử dụng các vòng lặp và các hoạt động xâu chuỗi với nhau sẽ là con đường để đi. Đây là một ví dụ để đổi tên các tập tin trong khi thêm một số incrementing vào cuối tên tập tin. Chỉ cần thay đổi ‘tìm kiếm’ và ‘thay thế’ trong kịch bản với các tên tương ứng mà bạn đang tìm kiếm và thay thế. Đây là một ví dụ:
Bước 1: Tạo tệp cho tập lệnh trong thư mục chứa các tệp bạn muốn đổi tên.
touch renameScript.sh
Bước 2: Mở tệp bằng trình chỉnh sửa văn bản ưa thích của bạn và thêm tập lệnh này vào tệp. Khi hoàn tất, đóng trình biên tập văn bản của bạn. (Đừng quên thay đổi ‘search’ và ‘replace’ trong tập lệnh để tìm kiếm và thay thế các tên tập tin!)
find -name 'search' | # find file gawk 'BEGIN{ a=1 }{ printf "mv %s replace%03d\n", $0, a++ }' bash # run
Bước 3: Thực hiện các tập tin thực thi.
chmod 644 renameScript.sh
Bước 4: Thực hiện kịch bản của bạn bằng cách nhập lệnh sau đây.
sh renameScript.sh
Đây là những gì nó sẽ giống như trong hành động.
Các tập tin:
file1
file2
Command:
sh renameScript.sh
Kết quả:
name001
name002
Và nếu bạn cần một định dạng cụ thể cho tên tập tin của bạn, có rất nhiều kịch bản bash trực tuyến được thiết kế xung quanh đổi tên các tập tin với nhiều định dạng khác nhau.