Cách đổi tên thư mục trên Linux

Tác giả sysadmin, T.M.Một 07, 2023, 01:18:12 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách đổi tên thư mục trên Linux


Đợi đã - bạn di chuyển một thư mục để đổi tên nó?

  • Đổi tên thư mục trong Linux không gây hại cho dữ liệu bên trong nó. Nó chỉ thay đổi đường dẫn đến dữ liệu, giữ nguyên các tập tin và thư mục.
  • Lệnh "mv" là phương pháp đơn giản và được sử dụng phổ biến nhất để đổi tên thư mục trong Linux.
  • Nếu bạn cần thực hiện các tác vụ đổi tên phức tạp hơn, lệnh "đổi tên" bằng biểu thức Perl sẽ cung cấp một tùy chọn mạnh mẽ và linh hoạt. Đảm bảo cài đặt phiên bản thích hợp cho bản phân phối Linux của bạn.

Đổi tên một thư mục trong Linux rất dễ dàng và có rất nhiều cách để thực hiện việc đó. Từ việc đổi tên một thư mục cho đến tìm và đổi tên nhiều thư mục, đây là cách thực hiện.

1. Đổi tên thư mục sẽ không gây hại cho dữ liệu của bạn

Đổi tên thư mục là điều tất cả chúng ta cần làm theo thời gian.

Chúng tôi có thể tạo một thư mục và viết sai tên của nó, nhưng chúng tôi muốn đặt nó đúng. Thông thường, mục đích của thư mục thay đổi theo thời gian hoặc trong suốt vòng đời của dự án và bạn muốn điều chỉnh tên để phản ánh mục đích sử dụng mới của nó. Có lẽ bạn đã giải nén một tệp lưu trữ và nó đã tạo một cây thư mục có tên thư mục bằng chữ in hoa và bạn muốn chúng ở dạng chữ thường.

Dù lý do là gì thì việc đổi tên thư mục cũng không ảnh hưởng gì đến dữ liệu chứa bên trong nó. Nó thay đổi đường dẫn đến dữ liệu đó, nhưng các tệp và thư mục bên trong thư mục đã đổi tên của bạn không bị ảnh hưởng.

Không đổi tên các thư mục hệ thống. Ít nhất, việc thay đổi đường dẫn đến các tệp và lệnh hệ thống sẽ có tác động bất lợi đến hoạt động của máy tính của bạn. Nếu bạn cần sử dụngsudo để đổi tên một thư mục---trừ khi bạn thực sự biết mình đang làm gì---thì rất có thể bạn không nên đổi tên nó.

2. Sử dụng lệnh mv

Trong những trường hợp đơn giản nhất, tất cả những gì chúng ta thực sự cần là mvlệnh. Đây là một phần không thể thiếu trong mọi bản phân phối Linux nên không cần phải cài đặt gì.

Lệnh này mvđã hơn 50 tuổi vào thời điểm viết bài. Nó xuất hiện từ buổi bình minh của Unix, khi các lệnh ngắn và khó hiểu đang thịnh hành, có lẽ để giảm số lượng ký tự phải truyền dọc theo các dòng nối tiếp chậm từ máy điện báo và thiết bị đầu cuối câm đến máy tính thực tế.

Nó thực sự là viết tắt của "di chuyển" và nó có thể được sử dụng để di chuyển các tập tin từ thư mục này sang thư mục khác. Nếu bạn di chuyển tệp đến cùng vị trí chứa tệp đó và đặt tên mới cho tệp đó thì bạn đã đổi tên tệp. Và chúng ta có thể làm tương tự với các thư mục.

Có hai thư mục con trong thư mục này.

Mã nguồn [Chọn]
ls

Để đổi tên một thư mục chúng ta sử dụng lệnh mv. Chúng ta cần cung cấp tên hiện tại của thư mục và tên mới.

Mã nguồn [Chọn]
mv old-work archive-2
v

Nếu thư mục bạn muốn đổi tên không có trong thư mục hiện tại, hãy cung cấp đường dẫn cũng như tên thư mục.

Mã nguồn [Chọn]
mv ~/htg/old-work ~/htg/archive-2
Mã nguồn [Chọn]
ls

3. Sử dụng Trình duyệt Tệp

Trình duyệt tập tin có thể đổi tên thư mục. Tổ hợp phím trong ứng dụng Tệp Gnome là F2. Đánh dấu một thư mục và nhấn phím F2 sẽ mở ra hộp thoại "Đổi tên thư mục".


Nhập tên mới và nhấp vào nút "Đổi tên" màu xanh lá cây.


Thư mục được đổi tên cho bạn.


Nó đơn giản như vậy.

4. Lệnh rename

Nếu nhu cầu của bạn phức tạp hơn việc đổi tên thư mục một cách đơn giản, bạn có thể cần sử dụng lệnh rename. Điều này cho phép bạn sử dụng các biểu thức Perl để đổi tên các tập tin và thư mục. Nó cung cấp một cách mạnh mẽ và linh hoạt hơn để đổi tên thư mục.

Chúng ta sẽ nói về rename lệnh dựa trên Perl. Có một lệnh khác cũ hơn được gọi renamelà một phần của tiện ích cốt lõi của Linux. Có thể bạn sẽ cần cài đặt renamelệnh Perl mà chúng tôi muốn sử dụng.

Để tránh xung đột tên với renamelệnh hiện có, lệnh Perl renameđược gọi prenametrên Fedora và perl-renametrên Manjaro. Trên Ubuntu, các lệnh renamevà prenameđều là các liên kết tượng trưng phân giải thành một tệp nhị phân có tên file-rename.

Vì vậy, trên Manjaro, lệnh bạn sẽ cần sử dụng perl-rename, và trên Fedora thì đó là prename. Trên Ubuntu, bạn có thể sử dụng renamehoặc prename.

Để cài đặt đổi tên Perl, trên Ubuntu bạn cần gõ:

Mã nguồn [Chọn]
sudo apt install rename

Trên Fedora, lệnh là:

Mã nguồn [Chọn]
sudo dnf install prename
Trên Manjaro gói được gọi là perl-rename.

Mã nguồn [Chọn]
sudo pacman -Sy perl-rename
Đảm bảo bạn sử dụng lệnh thích hợp cho bản phân phối của mình nếu bạn muốn xem qua các ví dụ.

5. Những bước đầu tiên với việc đổi tên

Lệnh này rename lấy các biểu thức chính quy Perl và áp dụng chúng cho một tệp hoặc thư mục hoặc nhóm tệp hoặc thư mục.

Trong thư mục của chúng tôi, chúng tôi có một tập hợp các thư mục khác.

Mã nguồn [Chọn]
ls

Tên của chúng là sự kết hợp giữa chữ thường, chữ hoa và chữ hoa hỗn hợp. Chúng ta có thể chuyển đổi tất cả chúng thành chữ thường với biểu thức phù hợp.

Mã nguồn [Chọn]
rename 'y/A-Z/a-z/' *
Mã nguồn [Chọn]
ls

Tất cả các thư mục hiện ở dạng chữ thường, cho dù trước đây chúng hoàn toàn là chữ hoa hay chứa chữ in hoa lẻ.

Tất cả sự kỳ diệu được chứa trong biểu thức. Biểu thức được gói trong dấu ngoặc đơn " '". Đây là ý nghĩa của toàn bộ lệnh.

  • y : Điều này có nghĩa là tìm kiếm bất kỳ ký tự nào trong phạm vi ký tự đầu tiên và thay thế nó bằng ký tự tương ứng trong phạm vi ký tự thứ hai.
  • /AZ/az/ : Phạm vi đầu tiên là tất cả các chữ cái từ "A" đến "Z" và phạm vi thứ hai là tất cả các ký tự từ "a" đến "z."
  • * : Ký tự đại diện dấu hoa thị có nghĩa là áp dụng điều này cho tất cả các thư mục.

Nói cách khác, lệnh có nội dung là "đối với tất cả các thư mục, hoán đổi mọi chữ cái viết hoa thành chữ cái viết thường tương đương."

Rõ ràng, bạn có thể đổi tên một thư mục bằng rename, mặc dù việc này có vẻ hơi quá mức cần thiết. Bạn sẽ nhanh hơn khi sử dụng mv.

Mã nguồn [Chọn]
rename 's/gamma/epsilon-2/' *
Mã nguồn [Chọn]
ls

Chữ "s" trong biểu thức này có nghĩa là thay thế. Nó kiểm tra từng thư mục để xem tên của nó có phải là "gamma" hay không. Nếu có, nó sẽ thay thế bằng "epsilon-2." Tuy nhiên, hãy lưu ý rằng điều này cũng sẽ khớp với thư mục có tên "gamma-zeta", chẳng hạn như đổi tên nó thành "epsilon-2-zeta".

Chúng ta có thể tránh điều này bằng cách thêm siêu ký tự bắt đầu chuỗi " ^" và cuối chuỗi " $" vào mệnh đề đầu tiên của biểu thức.

Mã nguồn [Chọn]
ls
Mã nguồn [Chọn]
rename 's/^gamma$/epsilon-2/' *
Mã nguồn [Chọn]
ls

Điều này khiến thư mục "epsilon-2" không bị ảnh hưởng.

6. Sử dụng đổi tên với các lệnh khác

Chúng ta có thể sử dụng các lệnh khác để xác định vị trí các thư mục mà chúng ta muốn rename làm việc. Nếu chúng ta có một tập hợp các thư mục lồng nhau và muốn đổi tên bất kỳ thư mục nào kết thúc bằng "-old" để chúng kết thúc bằng "-archive", chúng ta có thể đạt được điều đó bằng cách sử dụng findv à xargs.

Chúng tôi cần sử dụng xargs vì rename không chấp nhận đầu vào theo đường ống. Lệnh xargs khắc phục vấn đề đó bằng cách chấp nhận đầu vào theo đường ống và thêm vào dòng lệnh của lệnh khác dưới dạng tham số dòng lệnh.

Lệnh của chúng tôi trông như thế này:

Mã nguồn [Chọn]
find . -deep -type d -name "*-old" | xargs -r rename "s/old$/archive/"
  • . : Chúng tôi yêu cầu find bắt đầu tìm kiếm trong thư mục hiện tại. Tất nhiên, đây có thể là bất kỳ con đường nào.
  • -độ sâu : Sử dụng tìm kiếm theo chiều sâu. Điều này có nghĩa là nội dung của các thư mục con lồng nhau sâu hơn sẽ được xử lý trước các thư mục cao hơn.
  • -type d : Tìm kiếm thư mục, không phải tập tin.
  • -name "*-old" : Manh mối tìm kiếm. Chúng tôi đang tìm kiếm những thư mục có tên kết thúc bằng "-old."
  • | : Chúng tôi đang chuyển đầu ra từ find vào xargs lệnh.
  • xargs -r : -r(không chạy nếu trống) có nghĩa là không chạy lệnh nếu không có thư mục phù hợp.
  • rename "s/old$/archive/" : rename Lệnh sẽ được chạy.

Cây thư mục của chúng ta trông như thế này trước lệnh.


Chúng tôi chạy lệnh của chúng tôi:


Và chúng ta có thể thấy rằng tất cả các thư mục phù hợp bao gồm cả các thư mục lồng nhau đã được đổi tên.


7. Ngựa cho các khóa học

Đổi tên một thư mục không cần gì hơn mv. Nếu bạn thích các ứng dụng GUI, bạn có thể sử dụng trình duyệt tệp của mình. Nếu bạn có nhiều thư mục cần đổi tên và đặc biệt nếu chúng nằm rải rác trong cây thư mục, bạn sẽ cần sự linh hoạt của rename.