Cách dọn dẹp tệp không được quản lý

Cách tìm tệp trong Linux từ dòng lệnh

Bạn cần biết cách tìm một tập tin trong Linux ? Chà, thật ngạc nhiên, thật ngạc nhiên, bạn sẽ cần lệnh find trong Linux để truy quét hệ thống thư mục hoặc tệp của bạn. Lệnh find của Linux có thể lọc đệ quy các đối tượng bằng cơ chế có điều kiện đơn giản và nếu bạn sử dụng cờ -exec , bạn cũng có thể tìm thấy tệp trong Linux ngay lập tức và xử lý tệp đó mà không cần sử dụng lệnh khác.

Xác định vị trí tệp Linux theo tên hoặc phần mở rộng của chúng

Nhập find vào dòng lệnh để theo dõi một tệp cụ thể theo tên hoặc phần mở rộng của nó. Nếu bạn muốn tìm các tệp *.err trong thư mục /home/username/ và tất cả các thư mục con, hãy thử cách này: find /home/username/ -name "*.err"

Các lệnh và cú pháp tìm kiếm điển hình của Linux

tìm biểu thức lệnh trông như thế này:

find command options starting/path expression

Thuộc tính tùy chọn kiểm soát hành vi và phương pháp tối ưu hóa của quá trình tìm kiếm . Thuộc tính bắt đầu/đường dẫn xác định thư mục cấp cao nhất nơi lệnh find trong Linux bắt đầu quá trình lọc. Thuộc tính biểu thức kiểm soát các đánh giá quét cây thư mục để tạo đầu ra.

Hãy chia nhỏ lệnh tìm Linux trong đó chúng ta không chỉ muốn Linux tìm tệp theo tên:

find -O3 -L /var/www/ -name "*.html"

Nó cho phép tối ưu hóa cấp cao nhất (-O3) và cho phép tìm kiếm theo các liên kết tượng trưng (-L). Lệnh find trong Linux tìm kiếm trong toàn bộ hệ thống phân cấp thư mục trong /var/www/ để tìm các tệp có .html ở cuối.

Ví dụ cơ bản

1.find . -name thisfile.txt

Nếu bạn cần biết cách tìm một tệp trong Linux có tên thisfile.txt, nó sẽ tìm tệp đó trong thư mục hiện tại và thư mục con.

2.find /home -name *.jpg

Hãy tìm tất cả các tệp .jpg trong /home và các thư mục bên dưới nó.

3.find . -type f -empty

Hãy tìm một tập tin trống trong thư mục hiện tại.

4.find /home -user randomperson-mtime 6 -iname ".db"

Tìm kiếm tất cả các tệp .db (bỏ qua kiểu chữ) đã được người dùng có tên là Randomperson thay đổi trong 6 ngày trước đó .

Tùy chọn và tối ưu hóa lệnh tìm kiếm cho Linux

find được cấu hình để bỏ qua các liên kết tượng trưng (tệp phím tắt) theo mặc định. Nếu bạn muốn lệnh find theo dõi và hiển thị các liên kết tượng trưng, ​​​​chỉ cần thêm tùy chọn -L vào lệnh, như chúng tôi đã làm trong ví dụ này.

find có thể giúp Linux tìm file theo tên. Lệnh find của Linux nâng cao cách tiếp cận lọc để tối ưu hóa hiệu suất. Người dùng có thể tìm thấy tệp trong Linux bằng cách chọn ba giai đoạn tối ưu hóa -O1, -O2 và -O3. -O1 là cài đặt tiêu chuẩn và nó khiến find phải lọc theo tên tệp trước khi chạy bất kỳ thử nghiệm nào khác.

-O2 lọc theo tên và loại tệp trước khi tiếp tục với các bộ lọc đòi hỏi khắt khe hơn để tìm tệp trong Linux. Cấp -O3 sắp xếp lại tất cả các bài kiểm tra theo chi phí tương đối và khả năng thành công của chúng.

  • -O1– (Mặc định) lọc dựa trên tên tệp trước
  • -O2– Tên file trước, sau đó là loại file
  • -O3– Cho phép tìm kiếm tự động sắp xếp lại tìm kiếm dựa trên việc sử dụng tài nguyên hiệu quả và khả năng thành công
  • -maxdepth X– Tìm kiếm thư mục này cùng với tất cả các thư mục con đến cấp độ X
  • -iname– Tìm kiếm trong khi bỏ qua trường hợp văn bản.
  • -not– Chỉ cho ra kết quả không phù hợp với test case
  • -type f– Tìm kiếm tập tin
  • -type d– Tìm kiếm danh mục

Tìm tệp theo thời điểm chúng được sửa đổi

Lệnh find của Linux chứa khả năng lọc phân cấp thư mục dựa trên thời điểm tệp được sửa đổi lần cuối:

find / -name "*jpg" -mtime 5

find /home/randomuser/ -name "*jpg" -mtime 4

Lệnh find ban đầu của Linux sẽ hiển thị danh sách các tệp trong toàn bộ hệ thống kết thúc bằng ký tự jpg và đã được sửa đổi trong 5 ngày trước đó. Công cụ tiếp theo lọc thư mục chính của người dùng ngẫu nhiên để tìm các tệp có tên kết thúc bằng ký tự “conf” và đã được sửa đổi trong 4 ngày trước đó.

Sử dụng Grep để tìm tệp dựa trên nội dung

Lệnh find trong Linux rất hay nhưng nó chỉ có thể lọc cây thư mục theo tên file và dữ liệu meta. Để tìm kiếm tệp dựa trên nội dung trong đó, bạn sẽ cần một công cụ như grep. Hãy xem:

find . -type f -exec grep "forinstance" '{}' \; -print

Điều này đi qua mọi đối tượng trong cây thư mục hiện tại (.) đó là một tệp (-type f) và sau đó chạy grep ” forinstance ” cho mọi tệp khớp, sau đó in chúng ra màn hình (-print). Dấu ngoặc nhọn ({}) là phần giữ chỗ cho những kết quả khớp với lệnh find của Linux . {} Đi vào bên trong dấu ngoặc đơn (‘) để grep không bị đặt tên tệp sai. Lệnh -exec được kết thúc bằng dấu chấm phẩy (;), cũng cần có một lối thoát (\;) để shell không diễn giải nó.

Trước khi -exec được triển khai, xargs sẽ được sử dụng để tạo cùng loại đầu ra:

find . -type f -print | xargs grep "forinstance"

Cách định vị và xử lý tệp bằng lệnh Find trong Linux

Tùy chọn -exec chạy các lệnh đối với mọi đối tượng khớp với biểu thức tìm kiếm . Hãy xem nó trông như thế nào:

find . -name "rc.conf" -exec chmod o+r '{}' \;

Thao tác này lọc tất cả các đối tượng trong cây thư mục hiện tại (.) để tìm các tệp có tên rc.conf và chạy lệnh chmod o+r để thay đổi quyền truy cập tệp của các kết quả tìm thấy .

Thư mục gốc của Linux là nơi thực thi các lệnh -exec chạy. Sử dụng -execdir để thực thi lệnh bạn muốn trong thư mục chứa trận đấu vì lệnh này có thể an toàn hơn và cải thiện hiệu suất trong một số trường hợp nhất định.

Các tùy chọn -exec hoặc -execdir sẽ tiếp tục tự chạy, nhưng nếu bạn muốn xem lời nhắc trước khi chúng làm bất cứ điều gì, hãy đổi -exec   -ok hoặc -execdir lấy -okdir .

Kiểm tra dung lượng ổ đĩa từ dòng lệnh

Kiểm tra dung lượng ổ đĩa từ dòng lệnh Trước khi bắt đầu, hãy đảm bảo rằng bạn đã đăng nhập vào thiết bị đầu cuối với tư cách là người dùng root.

Sử dụng du lệnh để xem tập tin và thư mục nào tiêu tốn nhiều dung lượng nhất thư mục cần xem.

Ví dụ kiểm tra tất cả các tệp trong thư mục logs của tất cả user, sắp xếp theo kích thước giảm dần

du -h /home/*/logs/ | sort -rh

Tìm và xóa các file có kích thước 0 Byte

Đối với các tệp bị nhiễm mã độc, sau khi được phần mềm virus scan và xử lý, phần mềm virus sẽ xóa hết đoạn mã độc tuy nhiên sẽ để lại các file 0 byte, do lượng file này được phát sinh ra nhiều nên việc xóa thủ công gây mất nhiều thời gian và công sức, bạn có thể dùng dòng lệnh sau để tìm và xóa các tệp file 0 byte

find ‘[folder path]’ -size 0 -delete

Xóa các thư mục không rỗng

Thư mục không rỗng là thư mục còn chứa các tệp file trong thư mục, mặc dù không còn muốn sử dụng thư mục đó nữa tuy nhiên hệ thống yêu cầu bạn cần làm sạch các file trong thư mục trước khi tiến hành xóa thư mục đó. Với các thư mục nhiều cấp và mỗi cấp đều có file, điều này gây nhiều bất tiện và phiền toái. Bạn muốn xóa chúng ngay lập tức mà không cần quan tâm các file bên trong thư mục đó

rm -rf ‘[folder path]’