Có một số cách khác nhau để xóa thư mục trong hệ thống Linux. Nếu bạn sử dụng trình quản lý tệp trên Máy tính để bàn như Tệp của Gnome hoặc Dolphin của KDE, thì bạn có thể xóa tệp và thư mục bằng giao diện người dùng đồ họa của trình quản lý. Tuy nhiên, nếu bạn đang làm việc trên một máy chủ không đầu hoặc muốn xóa nhiều thư mục cùng một lúc, thì tùy chọn tốt nhất của bạn là xóa các thư mục (thư mục) khỏi dòng lệnh.

Trong bài viết này, chúng ta sẽ tìm hiểu làm thế nào để xóa các thư mục trong Linux sử dụng rmdirrm và find các lệnh.

Trước khi bắt đầu

Khi xóa thư mục bằng trình quản lý tệp trên máy tính để bàn, thư mục thực sự được chuyển vào Thùng rác và có thể dễ dàng khôi phục.

Hãy hết sức cẩn thận khi xóa tệp hoặc thư mục khỏi dòng lệnh vì một khi thư mục bị xóa bằng cách sử dụng các lệnh được giải thích trong bài viết này, nó không thể được khôi phục hoàn toàn.

Trên hầu hết các hệ thống tệp Linux, việc xóa một thư mục yêu cầu quyền ghi trên thư mục và nội dung của nó. Nếu không, bạn sẽ nhận được lỗi “Permission denied”.

Các tên thư mục có khoảng trắng trong chúng phải được thoát bằng dấu gạch chéo ngược ( /).

Xóa thư mục với rmdir

rmdir là một tiện ích dòng lệnh để xóa các thư mục trống. Nó rất hữu ích khi bạn muốn xóa một thư mục chỉ khi nó trống, mà không cần kiểm tra xem thư mục đó có trống hay không.

Để xóa một thư mục bằng rmdir, hãy nhập lệnh theo sau là tên của thư mục bạn muốn xóa. Ví dụ, để xóa một thư mục có tên dir1 bạn sẽ nhập:

rmdir dir1

Nếu thư mục không trống, bạn sẽ gặp lỗi sau:

rmdir: failed to remove 'dir1': No such file or directory

Trong trường hợp này, bạn sẽ cần sử dụng lệnh rm hoặc xóa nội dung thư mục theo cách thủ công trước khi có thể xóa.

Xóa thư mục với rm

rm là một tiện ích dòng lệnh để xóa tệp và thư mục. Không giống như rmdir các lệnh rm có thể xóa cả thư mục rỗng và không có sản phẩm nào.

Theo mặc định, khi được sử dụng mà không có bất kỳ tùy chọn rm nào sẽ không xóa các thư mục. Để xóa một thư mục trống, hãy sử dụng tùy chọn -d--dir) và để xóa một thư mục không trống và tất cả nội dung của nó sử dụng tùy chọn -r--recursive hoặc -R).

Ví dụ: để xóa một thư mục có tên dir1 cùng với tất cả nội dung của nó, bạn sẽ nhập:

rm -r dir1

Nếu một thư mục hoặc một tệp trong thư mục được bảo vệ chống ghi, bạn sẽ được nhắc xác nhận việc xóa. Để xóa một thư mục mà không được nhắc, hãy sử dụng tùy chọn -f:

rm -rf dir1

Để xóa nhiều thư mục cùng một lúc, hãy gọi lệnh rm, theo sau là tên của các thư mục được phân tách bằng dấu cách. Lệnh dưới đây sẽ xóa từng thư mục được liệt kê và nội dung của chúng:

rm -r dir1 dir2 dir3

Tùy chọn -i để nhắc bạn xác nhận việc xóa mỗi thư mục con và tập tin. Nếu thư mục chứa nhiều tệp, điều này có thể hơi khó chịu, vì vậy bạn có thể cân nhắc sử dụng tùy chọn -I chỉ nhắc bạn một lần trước khi tiếp tục xóa.

rm -rI dir1

Để xóa loại thư mục y và nhấn Enter.

rm: remove 1 argument recursively? y

Bạn cũng có thể sử dụng các bản mở rộng thông thường để khớp và xóa nhiều thư mục. Ví dụ: để xóa tất cả các thư mục cấp một trong thư mục hiện tại có kết thúc bằng _bak, bạn sẽ sử dụng lệnh sau:

rm -r *_bak

Sử dụng mở rộng thường xuyên khi xóa thư mục có thể có rủi ro. Trước tiên, bạn nên liệt kê các thư mục bằng ls lệnh để bạn có thể xem những thư mục nào sẽ bị xóa trước khi chạy lệnh rm.

Xóa thư mục với find

find là một tiện ích dòng lệnh cho phép bạn tìm kiếm các tệp và thư mục dựa trên một biểu thức nhất định và thực hiện một hành động trên mỗi tệp hoặc thư mục phù hợp.

Tình huống phổ biến nhất là sử dụng find để xóa các thư mục dựa trên một mẫu. Ví dụ: để xóa tất cả các thư mục kết thúc bằng thư mục _cache làm việc hiện tại, bạn sẽ chạy:

find . -type d -name '*_cache' -exec rm -r {} +

Hãy phân tích lệnh trên:

  • /dir– tìm kiếm đệ quy trong thư mục làm việc hiện tại ( .).
  • -type d – hạn chế tìm kiếm trong các thư mục.
  • -name '*_cache' – chỉ tìm kiếm các thư mục kết thúc bằng _cache
  • -exec– thực thi một lệnh bên ngoài với các đối số tùy chọn, trong trường hợp này là rm -r.
  • {} +– Nối các tệp tìm thấy vào cuối rm lệnh.

Xóa tất cả các thư mục trống

Để loại bỏ tất cả các thư mục trống trong cây thư mục, bạn sẽ chạy:

find /dir -type d -empty -delete

Đây là giải thích cho các tùy chọn được sử dụng:

  • /dir– tìm kiếm đệ quy trong thư mục /dir.
  • -type d – hạn chế tìm kiếm trong các thư mục.
  • -empty – giới hạn tìm kiếm chỉ trong các thư mục trống.
  • -delete– Xóa tất cả các thư mục trống được tìm thấy trong cây con. -delete chỉ có thể xóa các thư mục trống.

Sử dụng tùy chọn -delete một cách hết sức thận trọng. Dòng lệnh find được đánh giá là một biểu thức và nếu bạn thêm tùy chọn -delete trước, lệnh sẽ xóa mọi thứ bên dưới điểm bắt đầu mà bạn đã chỉ định.

Luôn kiểm tra lệnh trước mà không có tùy chọn -delete và sử dụng -delete làm tùy chọn cuối cùng.

/bin/rm: Argument list too long 

Thông báo lỗi này xuất hiện khi bạn sử dụng lệnh rm để xóa một thư mục có chứa một số lượng lớn các tệp. Điều này xảy ra vì số lượng tệp lớn hơn giới hạn hệ thống về kích thước của đối số dòng lệnh.

Có một số giải pháp khác nhau cho vấn đề này. Ví dụ, bạn có thể cd vào thư mục và theo cách thủ công hoặc sử dụng vòng lặp để xóa từng thư mục con.

Giải pháp đơn giản nhất trước tiên là xóa tất cả các tệp trong thư mục bằng lệnh find và sau đó xóa thư mục:

find /dir -type f -delete && rm -r /dir

Phần kết luận

Với rm và find bạn có thể xóa các thư mục dựa trên các tiêu chí khác nhau một cách nhanh chóng và hiệu quả.

Xóa thư mục là một quá trình đơn giản và dễ dàng, nhưng bạn phải thận trọng để không xóa dữ liệu quan trọng.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy để lại bình luận.

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ustvarite osebni račun
10 months ago

Your point of view caught my eye and was very interesting. Thanks. I have a question for you.