Câu hỏi Xóa tệp theo cách của thiết bị đầu cuối nơi tệp có từ khóa nhất định


CẬP NHẬT

Trạng thái của quá trình cho lệnh rm -rf ~/.local/share/Trash/files/ đã được đặt thành Very High. Lệnh được bắt đầu lúc 0745 hôm nay và vẫn đang chạy. Thời gian CPU hiện tại là 53 giây vào lúc 0955, bộ nhớ là không đổi ở 52,0 miB. Trạng thái đi giữa Running và Uninteruptible


Tôi đã mở nano ngày hôm qua để chỉ xem một tập tin và nhận thấy rằng bên trong thư mục chính của tôi tôi có một số lượng lớn các tập tin trong đó có thể bị xóa. Họ đang ở đó bởi vì một lúc trở lại tôi vô tình biến thư mục nhà của tôi thành một repo git. Tôi gỡ bỏ điều này, nhưng tôi muốn dọn dẹp đống lộn xộn mà tôi chỉ có thể nhìn thấy khi xem thư mục khi tìm kiếm tệp bằng nano.

Tôi có vấn đề tương tự trong thùng rác của tôi, nơi tôi có rất nhiều tập tin trong đó từ repos xấu git mà tôi không thể chỉ cần nhấp vào thùng rác và nhấp vào thùng rỗng tất cả 8 hợp đồng biểu diễn và trao đổi được sử dụng hết và không có gì bị xóa.

Làm thế nào tôi có thể xóa các tập tin từ thiết bị đầu cuối nơi các tập tin đáp ứng một mẫu nhất định? Tôi đã thử lệnh sau:

rm -rf ~/.local/share/Trash/Files/*

rm -rf ~/.local/share/Trash/info/*

và cuối cùng tôi đã nhận được một thông báo rằng chỉ có nhiều tệp và nó không xóa.

Tôi muốn nói xóa tất cả các tệp bắt đầu hoặc kết thúc bằng một số mẫu như .quo hoặc bất cứ điều gì họ có thể. Tóm tắt:

Làm cách nào để liệt kê tất cả các tệp để ít nhất tôi cũng có thể bắt đầu tìm kiếm một số mẫu bắt đầu hoặc kết thúc để xác định các tệp để xóa Làm cách nào để sử dụng mẫu đó để xóa chúng?


2
2018-05-01 12:27


gốc


Sử dụng lệnh find: find /path/to/directory/ -name *pattern*. Nếu danh sách đó liệt kê các tệp phù hợp, hãy xóa chúng bằng find /path/to/directory/ -name *pattern* -exec rm {} \;. Tùy chọn exec thực hiện lệnh rm, trong đó {} được thay thế bằng tên tệp. Các \; bit biểu thị sự kết thúc của lệnh rm. - Jos
Cảm ơn bạn tôi sẽ cố gắng tối nay khi tôi về nhà và cho bạn biết những gì sẽ xảy ra - MCP_infiltrator


Các câu trả lời:


Lỗi bạn nhận được là vì bạn có quá nhiều tệp có nghĩa là * trong của bạn rm lệnh được mở rộng đến một danh sách dài hơn giới hạn (ARG_MAX). Vì vậy, để giải quyết vấn đề này, bạn có các tùy chọn khác nhau:

  1. Đưa cho rm chỉ có một số của các tệp:

    rm -rf ~/.local/share/Trash/Files/*.quo
    
  2. Xóa thư mục chứa các tệp, điều này tránh liệt kê các tệp hoàn toàn:

    rm -rf ~/.local/share/Trash/Files/
    
  3. Sử dụng find:

    find ~/.local/share/Trash/Files/ -delete
    

    hoặc, không phải GNU find:

    find ~/.local/share/Trash/Files/ -exec rm {} +
    
  4. Sử dụng vòng lặp shell

    for file in  ~/.local/share/Trash/Files/*; do rm "$file"; done
    

2
2018-05-01 13:08



tính đến thời điểm hiện tại nó đã chạy được 20 phút, tôi đã đi đến đường dẫn ~ / .local / share / Trash và các tệp rm -rm sẽ cập nhật sau - MCP_infiltrator
lệnh sau rm -rf ~/.local/share/Trash/files/ đã được chạy trong hai giờ bây giờ, khi tôi đi đến các thuộc tính xử lý nó nói rằng việc sử dụng CPU là 0% và thời gian CPU là 48 giây, bộ nhớ cư trú vẫn không đổi ở 52,5 mb, trạng thái chuyển đổi giữa Uninterubtible và running - MCP_infiltrator
@MCP_infiltrator thì ổn. Không có lý do gì cho lệnh đó sử dụng CPU hoặc bộ nhớ đáng kể và nếu bạn đang xóa vài gigabyte tệp, nó có thể mất lứa tuổi. Bạn cũng có thể thử chạy rm -rfv ~/.local/share/Trash/Files/ sẽ liệt kê các tệp bị xóa ( -v có nghĩa là "tiết"). Bằng cách đó, bạn có thể chắc chắn nó đang làm một cái gì đó. - terdon♦
Cảm ơn bạn, không biết điều đó. Tôi sẽ ngừng quá trình hiện tại và sử dụng quy trình đó thay vào đó và báo cáo lại - MCP_infiltrator
không cần, nó chỉ hoàn thành, cảm ơn bạn đã giúp đỡ của bạn tôi thực sự đánh giá cao nó. - MCP_infiltrator