Cách sử dụng lệnh Rename file trên Linux

Trong Linux, có lệnh Mv để giúp bạn đổi tên file và tệp đơn giản. Sau đây, hãy cùng Followeek khám phá chi tiết cách sử dụng lệnh mv trong môi trường Linux hiệu quả.

Đổi tên một tệp đơn bằng mv

Để sử dụng mv để đổi tên một loại tệp mv, khoảng trắng, tên của tệp, khoảng trắng và tên mới mà bạn muốn tệp có. Sau đó nhấn Enter.

Bạn có thể dùng ls để kiểm tra tệp đã được đổi tên.

mv oldfile.txt newfile.txt
ls *.txt

mv oldfile.txt newfile.txt trong cửa sổ dòng lệnh

Đổi tên nhiều tệp bằng mv

Giả sử chúng ta có một thư mục với nhiều loại tệp trong đó, thuộc các loại khác nhau. Một số tệp này có phần mở rộng “.prog”. Chúng tôi muốn đổi tên chúng tại dòng lệnh để chúng có phần mở rộng “.prg”.

ls *.prog -l

ls * .prog -l trong cửa sổ dòng lệnh

Đây là một cách để làm điều đó mà không cần phải viết tệp Bash script thực tế.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

cho f trong * .prog;  do mv - "$ f" "$ {f% .prog} .prg" trong cửa sổ dòng lệnh

DId rằng hoạt động? Hãy kiểm tra các tập tin và xem.

ls *.pr*

ls * .pr * trong cửa sổ dòng lệnh

Vì vậy, có, nó đã hoạt động. Hiện tại chúng đều là tệp “.prg” và không có tệp “.prog” nào trong thư mục.

Sử dụng lệnh rename

Chắc chắn nhất. Nó là rename.

rename không phải là một phần của bản Linux tiêu chuẩn, vì vậy bạn sẽ cần phải cài đặt nó. Nó cũng có một tên khác trong các dòng Linux khác nhau, nhưng chúng đều hoạt động theo cùng một cách. Bạn sẽ chỉ phải thay thế tên lệnh thích hợp theo hương vị Linux mà bạn đang sử dụng.

trong Ubuntu và các bản phân phối bắt nguồn từ Debian mà bạn cài đặt rename như thế này:

sudo apt-get install rename

sudo apt-get install đổi tên trong cửa sổ đầu cuối

Trong các bản phân phối có nguồn gốc từ Fedora và RedHat mà bạn cài đặt prename như thế này. Lưu ý chữ “p” đầu tiên là viết tắt của Perl.

sudo dnf install prename

sudo dnf cài đặt tên trước trong cửa sổ đầu cuối

Để cài đặt nó trong Manjaro Linux, hãy sử dụng lệnh sau. Lưu ý rằng lệnh đổi tên được gọi là perl-rename.

sudo pacman -Syu perl-rename

sudo pacman -Syu perl-rename trong cửa sổ đầu cuối

Đổi tệp đơn bằng rename

Và lần này chúng tôi sẽ sử dụng rename. Chúng tôi sẽ quay ngược đồng hồ để chúng tôi có một tập hợp các tệp “.prog”.

ls *.prog

ls * .prog trong cửa sổ dòng lệnh

Bây giờ chúng ta hãy sử dụng lệnh sau để đổi tên chúng. Sau đó chúng tôi sẽ kiểm tra với ls cho dù nó hoạt động. Nhớ thay thế rename với tên lệnh thích hợp cho Linux của bạn nếu bạn không sử dụng Ubuntu hoặc Linux có nguồn gốc từ Debian.

rename 's/.prog/.prg/' *.prog
ls *.pr*

đổi tên 's / .prog / .prg /' * .prog trong cửa sổ dòng lệnh

Điều đó đã hiệu quả, giờ đây chúng đều là tệp “.prg” và không còn tệp “.prog” nào trong thư mục.

Thay đổi các phần khác của tên tệp

Chúng tôi đã thay đổi phần mở rộng tên tệp cho đến nay, hãy sửa đổi các phần khác của tên tệp.

Trong thư mục có rất nhiều tệp mã nguồn C. Tất cả các tên tệp đều có tiền tố là “slang_”. Chúng tôi có thể kiểm tra điều này với ls.

ls sl*.c

ls sl * .c trong cửa sổ dòng lệnh

Chúng tôi sẽ thay thế tất cả các lần xuất hiện của “slang_” bằng “sl_”. Định dạng của lệnh đã quen thuộc với chúng ta. Chúng tôi chỉ thay đổi cụm từ tìm kiếm, cụm từ thay thế và loại tệp.

rename 's/slang_/sl_' *.c

đổi tên 's / slang_ / sl_' * .c trong cửa sổ dòng lệnh

Lần này chúng tôi đang tìm kiếm các tệp “.c” và tìm kiếm “slang_”. Bất cứ khi nào “slang_” được tìm thấy trong tên tệp, nó sẽ được thay thế bằng “sl_”.

Chúng ta có thể kiểm tra kết quả của lệnh đó bằng cách lặp lại lệnh ls từ trên với các tham số tương tự:

ls sl*.c

ls sl * .c trong cửa sổ dòng lệnh

Xóa một phần của tên tệp

Chúng tôi có thể xóa một phần của tên tệp bằng cách thay thế cụm từ tìm kiếm bằng không.

ls *.c
rename 's/sl_//' *.c
ls *.c

đổi tên 's / sl _ //' * .c trong cửa sổ dòng lệnh

Chúng ta có thể thấy từ lệnh ls rằng các tệp “.c” của chúng tôi đều được thêm vào trước bằng “sl_”. Hãy loại bỏ điều đó hoàn toàn.

Các lệnh rename tuân theo cùng một định dạng như trước. Chúng tôi sẽ tìm kiếm các tệp “.c”. Cụm từ tìm kiếm là “sl_”, nhưng không có cụm từ thay thế. Hai dấu gạch chéo ngược mà không có bất kỳ thứ gì giữa chúng có nghĩa là không có gì, một chuỗi rỗng.

rename sẽ xử lý lần lượt từng tệp “.c”. Nó sẽ tìm kiếm “sl_” trong tên tệp. Nếu nó được tìm thấy, nó sẽ được thay thế bằng không. Nói cách khác, cụm từ tìm kiếm sẽ bị xóa.

Việc sử dụng thứ hai của ls lệnh xác nhận rằng tiền tố “sl_” đã bị xóa khỏi mọi tệp “.c”.

Giới hạn các thay đổi đối với các phần cụ thể của tên tệp

Hãy sử dụng ls để xem các tệp có chuỗi “param” trong tên tệp của chúng. Sau đó, chúng tôi sẽ sử dụng rename để thay thế chuỗi đó bằng chuỗi “tham số”. Chúng tôi sẽ sử dụng ls một lần nữa để xem hiệu quả lệnh rename đã có trên các tệp đó.

ls *param*
rename 's/param/parameter' *.c
ls *param*

đổi tên 's / param / tham số' * .c trong cửa sổ dòng lệnh

Bốn tệp được tìm thấy có “param” trong tên tệp của chúng. param.c, param_one.c và param_two.c đều có “param” tại khởi đầu tên của họ. third_param.c có “param” ở kết thúc tên của nó, ngay trước phần mở rộng.

Các lệnh rename sẽ tìm kiếm “param” ở mọi nơi trong tên tệp và thay thế nó bằng “tham số” trong mọi trường hợp.

Việc sử dụng thứ hai của lệnh ls cho chúng ta thấy rằng đó chính xác là những gì đã xảy ra. Cho dù “tham số” ở đầu hay cuối tên tệp, nó đã được thay thế bằng “tham số”.

Chúng ta có thể sử dụng siêu ký tự của Perl để tinh chỉnh hành vi của biểu thức giữa. Metacharacters là ký hiệu đại diện cho vị trí hoặc trình tự của các ký tự. Ví dụ, ^ có nghĩa là “bắt đầu của một chuỗi”, $ có nghĩa là “kết thúc của một chuỗi” và . nghĩa là bất kỳ ký tự đơn nào (ngoài ký tự dòng mới).

Chúng ta sẽ sử dụng phần bắt đầu của siêu ký tự chuỗi ( ^ ) để giới hạn tìm kiếm của chúng tôi ở đầu tên tệp.

ls *param*.c
rename 's/^parameter/value/' *.c
ls *param*.c
ls value*.c

đổi tên 's / ^ tham số / giá trị /' * .c trong cửa sổ dòng lệnh

Các tệp chúng tôi đã đổi tên trước đó được liệt kê và chúng ta có thể thấy chuỗi “tham số” nằm ở đầu của ba tên tệp và nó nằm ở cuối một trong các tên tệp.

Của chúng tôi lệnh rename sử dụng đầu dòng (^) siêu ký tự trước cụm từ tìm kiếm “tham số”. Điều này nói với rename để chỉ coi cụm từ tìm kiếm đã được tìm thấy nếu nó ở đầu tên tệp. Chuỗi tìm kiếm “tham số” sẽ bị bỏ qua nếu nó nằm ở bất kỳ vị trí nào khác trong tên tệp.

Kiểm tra với ls, chúng ta có thể thấy rằng tên tệp có “tham số” tại kết thúc của tên tệp chưa được sửa đổi, nhưng ba tên tệp có “tham số” ở khởi đầu tên của họ đã có chuỗi tìm kiếm được thay thế bằng cụm từ thay thế “giá trị”.

Sức mạnh của rename nằm ở sức mạnh của Perl. Tất cả sức mạnh của Perl là do bạn sử dụng.

Tìm kiếm với các nhóm

rename đã có thêm nhiều thủ thuật lên tay áo của nó. Hãy xem xét trường hợp bạn có thể có các tệp có chuỗi tương tự trong tên của chúng. Chúng không hoàn toàn là các chuỗi giống nhau, vì vậy, tìm kiếm và thay thế đơn giản sẽ không hoạt động ở đây.

Trong ví dụ này, chúng tôi sử dụng ls để kiểm tra xem chúng tôi có tệp nào bắt đầu bằng “str”. Có hai trong số chúng, string.c và Strale.c. Chúng ta có thể đổi tên cả hai chuỗi cùng một lúc bằng cách sử dụng kỹ thuật gọi là nhóm.

Biểu hiện trung tâm của điều này lệnh rename sẽ tìm kiếm các chuỗi trong tên tệp có chuỗi ký tự “stri” hoặc là “Stra” trong đó các chuỗi đó được theo sau ngay bởi “ng”. Nói cách khác, cụm từ tìm kiếm của chúng tôi sẽ tìm kiếm “strang”  “string”. Thuật ngữ thay thế là “bang”.

ls str*.c
rename 's/(stri|stra)ng/bang/' *.c
ls ban*.c

đổi tên 's / (stri | stra) ng / bang /' * .c trong cửa sổ dòng lệnh

Sử dụng ls lần thứ hai xác nhận rằng string.c đã trở thành bang.c và siết chặt.c bây giờ là bangle.c.

Sử dụng bản dịch có đổi tên

Các lệnh rename có thể thực hiện các hành động trên tên tệp được gọi là bản dịch. Một ví dụ đơn giản về bản dịch là buộc một tập hợp các tên tệp thành chữ hoa.

bên trong lệnh rename bên dưới thông báo rằng chúng tôi không sử dụng s/ để bắt đầu biểu thức trung tâm, chúng tôi đang sử dụng y/. Điều này nói với rename chúng tôi không thực hiện thay thế; chúng tôi đang thực hiện một bản dịch.

Các thuật ngữ a-z là một biểu thức Perl có nghĩa là tất cả các ký tự viết thường trong dãy từ a đến z. Tương tự, thuật ngữ A-Z đại diện cho tất cả các chữ cái viết hoa trong dãy từ A đến Z.

Biểu thức trung tâm trong lệnh này có thể được diễn giải như “nếu tìm thấy bất kỳ chữ cái thường nào từ a đến z trong tên tệp, hãy thay thế chúng bằng các ký tự tương ứng từ chuỗi ký tự viết hoa từ A đến Z.”

Để buộc tên tệp của tất cả các tệp “.prg” thành chữ hoa, hãy sử dụng lệnh sau:

rename ‘y/a-z/A-Z/’ *.prg

ls *.PRG

đổi tên 'y / az / AZ /' * .prg trong cửa sổ dòng lệnh

Các ls lệnh cho chúng ta thấy rằng tất cả các tên tệp “.prg” hiện đều ở dạng chữ hoa. Trên thực tế, chính xác một cách nghiêm túc, chúng không phải là tệp “.prg” nữa. Chúng là các tệp “.PRG”. Linux phân biệt chữ hoa chữ thường.

Chúng ta có thể đảo ngược lệnh cuối cùng đó bằng cách đảo ngược vị trí của a-z và A-Z các thuật ngữ trong biểu thức trung tâm.

rename ‘y/A-Z/a-z/’ *.PRG

ls *.prg

đổi tên 'y / AZ / az /' * .PRG trong cửa sổ dòng lệnh

Hy vọng rằng bài viết này đã giúp ích được cho bạn! Followeek chúc bạn một ngày mới tốt lành.

Post a Comment