Làm thế nào để đổi tên nhiều file một lúc trên Linux

Làm thế nào để đổi tên nhiều file một lúc trên Linux

Chúng tôi sẽ chỉ cho bạn, làm thế nào để đổi tên nhiều file trên Linux. Mỗi hệ điều hành trong thế giới hiện đại đi kèm với một số cách để tương tác với hệ thống tập tin của nó. Cho dù đó là tạo tệp, đổi tên, sao chép hoặc xóa chúng, tất cả đều có chức năng để thực hiện tất cả các tác vụ này một cách hiệu quả. Tuy nhiên, một trong những hoạt động mà hầu hết các hệ điều hành gặp khó là đổi tên một số tập tin cùng một lúc. Cho dù bạn cần một mẫu mà các tập tin cần phải làm theo, hoặc nếu bạn chỉ muốn đổi tên nhiều tập tin cùng một lúc, việc đổi tên các tập tin có thể khá tẻ nhạt.May mắn thay, đổi tên phần mềm. Chúng tôi có thể giúp giải quyết vấn đề này. Trong hướng dẫn này, chúng ta sẽ đi qua một vài lựa chọn để đổi tên hàng loạt các tập tin trên các hệ thống dựa trên Debian, cũng như các hệ thống RHEL (RedHat Enterprise Linux).

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  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.

Author Image
Hoàng Tùng

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *