Cách sử dụng lệnh đổi tên trên Linux

Nắm bắt được sức mạnh đổi tên tệp của thế giới Linux và cung cấp mv—Và bản thân — phần còn lại. Đổi tên linh hoạt, nhanh chóng và đôi khi còn dễ dàng hơn. Đây là hướng dẫn về sức mạnh của lệnh này.

Điều gì sai với mv?

Không có gì sai với mv . Lệnh thực hiện rất tốt công việc và nó được tìm thấy trên tất cả các bản phân phối Linux, macOS và các hệ điều hành giống Unix khác. Vì vậy, nó luôn có sẵn. Nhưng đôi khi bạn chỉ cần một chiếc máy ủi chứ không cần một cái xẻng.

Các mv lệnh có một mục đích trong cuộc sống và đó là để di chuyển các tệp. Đó là một tác dụng phụ đáng mừng khi nó có thể được sử dụng để di chuyển một tệp hiện có thành một tệp mới, với một tên mới. Hiệu quả thực sự là đổi tên tệp, vì vậy chúng tôi có được những gì chúng tôi muốn. Nhưng mv không phải là một công cụ đổi tên tệp chuyên dụng.

Đổ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ùngls để kiểm tra tệp đã được đổi tên.

mv oldfile.txt newfile.txt
ls * .txt

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

Mọi thứ trở nên phức tạp hơn khi bạn muốn đổi tên nhiều tệp. mv không có khả năng đối phó với việc đổi tên nhiều tệp. Bạn phải sử dụng một số thủ thuật Bash tiện lợi. Điều đó tốt nếu bạn biết một số dòng lệnh cấp trung bình, nhưng sự phức tạp của việc đổi tên nhiều tệp với mv hoàn toàn trái ngược với sự dễ sử dụng mv để đổi tên một tệp duy nhất.

Mọi thứ leo thang nhanh chóng.

Giả sử chúng tôi 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”.

Làm thế nào để chúng ta quấn lấy nhau mv làm điều đó cho chúng tôi? Chúng ta hãy xem các tệp.

ls * .prog -l

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

cho f trong * .prog; làm mv - "$ f" "$ {f% .prog} .prg"

DId rằng công việc? Hãy kiểm tra các tệp và xem.

ls * .pr *

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

Chuyện gì vừa xảy ra?

Lệnh dài đó thực sự làm gì? Hãy chia nhỏ nó.

cho f trong * .prog; làm mv - "$ f" "$ {f% .prog} .prg"

Phần đầu tiên bắt đầu một vòng lặp sẽ lần lượt xử lý từng tệp “.prog” trong thư mục.

Phần tiếp theo cho biết quá trình xử lý sẽ như thế nào làm. Nó đang sử dụngmv để chuyển từng tệp sang tệp mới. Tệp mới sẽ được đặt tên với tên của tệp gốc ngoại trừ phần “.prog”. Thay vào đó, phần mở rộng mới của “.prg” sẽ được sử dụng.

Phải có một cách đơn giản hơn

Chắc chắn nhất. Nó là đổi tên chỉ huy.

đổi tên không phải là một phần của bản phân phối 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 họ 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 phiên bản Linux mà bạn đang sử dụng.

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

sudo apt-get install rename

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

sudo dnf cài đặt tên trước

Để 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

Hãy làm điều đó một lần nữa

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

ls * .prog

Bây giờ, 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ế đổi tên 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.

đổi tên 's / .prog / .prg /' * .prog
ls * .pr *

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

Điều gì đã xảy ra TIme này?

Hãy giải thích điều kỳ diệu đó trong ba phần.

Các Đầu tiên một phần là tên lệnh, đổi tên (hoặc là tên trước hoặc là perl-rename , đối với các bản phân phối khác).

Các Cuối cùng một phần là *.ăn xin, câu nói nào đổi tên để hoạt động trên tất cả các tệp “.prog”.

Các ở giữa phần xác định công việc chúng ta muốn thực hiện trên mỗi tên tệp. Các S có nghĩa là thay thế. Nhiệm kỳ đầu tiên (.ăn xin) là gì đổi tên sẽ tìm kiếm trong từng tên tệp và từ thứ hai (.prg) là những gì nó sẽ được thay thế bằng.

Phần giữa của lệnh, hoặc biểu thức trung tâm, là một 'biểu thức chính quy' Perl và nó là thứ mang lại cho đổi tên chỉ huy tính linh hoạt của nó.

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

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.

đổi tên 's / slang_ / sl_' * .c

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 ls lệnh từ trên với các tham số tương tự:

ls sl * .c

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
đổi tên 's / sl _ //' * .c
ls * .c

Chúng ta có thể thấy từ ls lệnh 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 đổi tên lệnh 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 cứ thứ gì giữa chúng có nghĩa là không có gì, một chuỗi rỗng.

đổi tên 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 đổi tên để 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ả đổi tên lệnh đã có trên các tệp đó.

ls * thông số *
đổi tên 's / param / tham số' * .c
ls * thông số *

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ó "tham số" ở kết thúc tên của nó, ngay trước phần mở rộng.

Các đổi tên lệnh sẽ tìm kiếm “param” ở khắp 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ủals lệnh 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 tôi 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. Siêu ký tự là các 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à . có nghĩa là bất kỳ ký tự đơn nào (ngoài ký tự dòng mới).

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

ls * param * .c
đổi tên 's / ^ tham số / giá trị /' * .c
ls * param * .c
Giá trị ls * .c

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ó ở cuối một trong các tên tệp.

Của chúng tôi đổi tên lệnh 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 đổi tên để chỉ coi cụm từ tìm kiếm đã được tìm thấy nếu nó nằm ở đầ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 đã không được sửa đổi, nhưng ba tên tệp có "tham số" tại 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 đổi tên 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

đổi tên đã có nhiều thủ thuật hơn trong tay áo của nó. Hãy xem xét trường hợp bạn có thể có các tệp có cá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 đổi tên lệnh 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 “chuỗi” "Bóp cổ". Thuật ngữ thay thế là "bang".

ls str * .c
đổi tên 's / (stri | stra) ng / bang /' * .c
ls cấm * .c

Sử dụngls 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 đổi tên lệnh 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 đổi tên lệnh 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đổi tên 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 a-z thuật ngữ là một biểu thức Perl có nghĩa là tất cả các ký tự viết thường trong chuỗi từ a đến z. Tương tự, A-Z thuật ngữ đạ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:

đổi tên ‘y / a-z / A-Z /’ * .prg

ls * .PRG

Các ls lệnh cho chúng ta thấy rằng tất cả các tên tệp “.prg” bây giờ đề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-zA-Z các thuật ngữ trong biểu thức trung tâm.

đổi tên ‘y / A-Z / a-z /’ * .PRG

ls * .prg

Bạn (Wo | Do) không học Perl trong năm phút

Nắm bắt được Perl là thời gian dành cho bạn. Nhưng để bắt đầu sử dụng khả năng tiết kiệm thời gian của đổi tên lệnh, bạn không cần phải có nhiều kiến ​​thức về Perl để gặt hái những lợi ích lớn về sức mạnh, tính đơn giản và thời gian.


$config[zx-auto] not found$config[zx-overlay] not found