Linux mv command

Lệnh mv trong Linux: Di chuyển và Đổi tên Tệp tin Dễ dàng

Chào bạn đọc! Trong thế giới Linux đầy mạnh mẽ, lệnh mv (viết tắt của "move") là một công cụ không thể thiếu giúp bạn quản lý tệp tin và thư mục một cách hiệu quả. Lệnh này không chỉ đơn thuần là di chuyển vị trí của tệp mà còn có thể đổi tên chúng một cách nhanh chóng. Bài viết này sẽ cung cấp cho bạn một cái nhìn toàn diện về lệnh mv, từ cú pháp cơ bản đến các ứng dụng thực tế, giúp bạn làm chủ công cụ này một cách dễ dàng.

Cú pháp cơ bản của lệnh mv

Cú pháp của lệnh mv khá đơn giản, bao gồm lệnh mv, nguồn (tệp tin hoặc thư mục cần di chuyển/đổi tên) và đích (vị trí mới hoặc tên mới).

mv [tùy chọn] nguồn đích

Trong đó:

  • mv: Lệnh gọi thực hiện thao tác di chuyển hoặc đổi tên.
  • [tùy chọn]: Các tùy chọn điều chỉnh hành vi của lệnh (sẽ được đề cập chi tiết hơn ở phần sau).
  • nguồn: Tệp tin hoặc thư mục bạn muốn di chuyển hoặc đổi tên.
  • đích: Vị trí mới bạn muốn di chuyển tệp/thư mục đến, hoặc tên mới bạn muốn đặt cho tệp/thư mục.

Di chuyển tệp tin và thư mục

Để di chuyển một tệp tin hoặc thư mục, bạn chỉ cần cung cấp đường dẫn nguồn và đường dẫn đích. Ví dụ, để di chuyển tệp tin document.txt từ thư mục hiện tại vào thư mục Documents, bạn sử dụng lệnh sau:

mv document.txt Documents/

Tương tự, để di chuyển thư mục Project1 vào thư mục Projects, bạn dùng lệnh:

mv Project1 Projects/

Nếu thư mục đích không tồn tại, mv sẽ cố gắng tạo ra một thư mục mới với tên được chỉ định và di chuyển nguồn vào đó. Hãy cẩn thận, vì nếu thư mục đích không tồn tại và bạn chỉ định một tệp tin, mv sẽ đổi tên tệp tin nguồn thành tên bạn cung cấp cho đích.

Đổi tên tệp tin và thư mục

Để đổi tên một tệp tin hoặc thư mục, bạn chỉ cần cung cấp tên mới cho tham số đích. Ví dụ, để đổi tên tệp tin old_name.txt thành new_name.txt, bạn sử dụng lệnh:

mv old_name.txt new_name.txt

Tương tự, để đổi tên thư mục OldProject thành NewProject, bạn dùng lệnh:

mv OldProject NewProject

Các tùy chọn thường dùng của lệnh mv

Lệnh mv cung cấp nhiều tùy chọn để điều chỉnh hành vi của nó. Dưới đây là một số tùy chọn phổ biến:

  • -i (interactive): Yêu cầu xác nhận trước khi ghi đè một tệp tin đã tồn tại. Điều này giúp bạn tránh mất dữ liệu do vô tình ghi đè.
  • -f (force): Ghi đè các tệp tin đã tồn tại mà không cần xác nhận. Sử dụng tùy chọn này một cách cẩn thận vì nó có thể dẫn đến mất dữ liệu.
  • -n (no-clobber): Không ghi đè tệp tin đã tồn tại. Nếu tệp tin đích đã tồn tại, lệnh mv sẽ không thực hiện thao tác.
  • -u (update): Di chuyển tệp tin nguồn chỉ khi nó mới hơn tệp tin đích, hoặc khi tệp tin đích không tồn tại.
  • -v (verbose): Hiển thị thông tin chi tiết về quá trình di chuyển hoặc đổi tên.

Ví dụ, để di chuyển tệp tin important.txt vào thư mục Backup và yêu cầu xác nhận nếu tệp tin đích đã tồn tại, bạn sử dụng lệnh:

mv -i important.txt Backup/

Ứng dụng thực tế của lệnh mv

Lệnh mv được sử dụng rộng rãi trong nhiều tình huống khác nhau. Dưới đây là một vài ví dụ:

  • Sắp xếp tệp tin: Di chuyển các tệp tin vào các thư mục khác nhau dựa trên loại tệp, ngày tạo, hoặc các tiêu chí khác.
  • Đổi tên hàng loạt tệp tin: Kết hợp với các công cụ khác như find và sed để đổi tên hàng loạt các tệp tin theo một quy tắc nhất định.
  • Tổ chức dự án: Di chuyển các tệp tin và thư mục giữa các dự án khác nhau.
  • Sao lưu dữ liệu: Di chuyển các tệp tin quan trọng vào thư mục sao lưu.

So sánh lệnh mv với các lệnh khác

Dưới đây là bảng so sánh lệnh mv với các lệnh tương tự trong Linux:

Lệnh Mô tả Chức năng chính
mv Di chuyển hoặc đổi tên tệp tin/thư mục. Thay đổi vị trí hoặc tên của tệp tin/thư mục.
cp Sao chép tệp tin/thư mục. Tạo bản sao của tệp tin/thư mục.
rm Xóa tệp tin/thư mục. Loại bỏ tệp tin/thư mục.

Ví dụ thực tế

Tình huống 1: Sắp xếp ảnh theo năm. Bạn có một thư mục chứa tất cả ảnh của bạn, và bạn muốn sắp xếp chúng vào các thư mục riêng theo năm chụp. Bạn có thể sử dụng một script kết hợp find, exiftool (để trích xuất năm chụp) và mv để thực hiện việc này một cách tự động.


  find . -name ".jpg" -print0 | while IFS= read -r -d $'\0' file; do
    year=$(exiftool -CreateDate "$file" | awk '{print substr($4,1,4)}')
    if [ ! -d "$year" ]; then
      mkdir "$year"
    fi
    mv "$file" "$year/"
  done
  

Tình huống 2: Đổi tên hàng loạt file Markdown để tạo URL thân thiện. Bạn muốn đổi tên tất cả các file Markdown có khoảng trắng và ký tự đặc biệt thành tên file chỉ chứa chữ thường và dấu gạch ngang. Bạn có thể sử dụng find, sed và mv.


  find . -name ".md" -print0 | while IFS= read -r -d $'\0' file; do
    new_name=$(echo "$file" | sed 's/[^a-z0-9]/-/ig' | tr 'A-Z' 'a-z')
    mv "$file" "$new_name"
  done
  

Câu hỏi thường gặp (FAQ)

Làm thế nào để di chuyển nhiều tệp tin cùng lúc?
Bạn có thể sử dụng ký tự đại diện (wildcard) để chọn nhiều tệp tin cùng lúc. Ví dụ, mv .txt Documents/ sẽ di chuyển tất cả các tệp tin có đuôi .txt vào thư mục Documents. Bạn cũng có thể liệt kê nhiều tệp tin nguồn, cách nhau bởi dấu cách: mv file1.txt file2.txt file3.txt Documents/
Điều gì xảy ra nếu tệp tin đích đã tồn tại?
Theo mặc định, lệnh mv sẽ ghi đè tệp tin đích mà không cần xác nhận. Để tránh mất dữ liệu, bạn nên sử dụng tùy chọn -i để yêu cầu xác nhận trước khi ghi đè.
Làm thế nào để di chuyển một tệp tin vào một thư mục có cùng tên?
Bạn không thể di chuyển một tệp tin vào một thư mục có cùng tên. Hệ thống sẽ báo lỗi. Bạn cần đổi tên tệp tin hoặc thư mục trước khi thực hiện thao tác di chuyển.
Làm sao để hoàn tác (undo) lệnh mv?
Rất tiếc, lệnh mv không có chức năng hoàn tác. Bạn nên sao lưu dữ liệu quan trọng trước khi sử dụng lệnh mv để tránh mất dữ liệu do thao tác sai.
Tại sao tôi gặp lỗi "mv: cannot move '...' to '...': Cross-device link"?
Lỗi này xảy ra khi bạn cố gắng di chuyển một tệp tin giữa các phân vùng (partition) hoặc hệ thống tệp tin khác nhau (ví dụ từ ổ cứng này sang ổ cứng khác). Thay vì di chuyển, bạn cần sao chép (cp) tệp tin sang đích, sau đó xóa tệp tin gốc (rm).

Kết luận

Lệnh mv là một công cụ mạnh mẽ và linh hoạt trong Linux, cho phép bạn dễ dàng di chuyển và đổi tên tệp tin và thư mục. Bằng cách hiểu rõ cú pháp, các tùy chọn và ứng dụng thực tế của lệnh mv, bạn có thể quản lý hệ thống tệp tin của mình một cách hiệu quả hơn. Hãy thực hành thường xuyên để làm chủ công cụ này và khám phá thêm nhiều khả năng tuyệt vời mà nó mang lại. Chúc bạn thành công!

Last Updated : 22/08/2025