Điểm:4

Làm cách nào để đếm tất cả các tệp trên hệ thống của tôi?

lá cờ ng

Tôi cần xem có bao nhiêu tệp trên toàn bộ hệ thống của mình. Cụ thể, tôi cần đếm tất cả các tệp từ / (vì vậy trên toàn bộ hệ thống) và tôi cần lấy một số ở cuối. Vì vậy, giống như có 10000 tệp trên toàn bộ hệ thống.

Làm thế nào tôi có thể thực hiện điều này? Tôi hy vọng bạn có thể giúp đỡ!

lá cờ cn
"Cụ thể, tôi cần đếm tất cả các tệp từ / (vì vậy trên toàn bộ hệ thống)," Tôi thấy một vấn đề ở đây... điều này cũng sẽ tính các tmpf và đó là các tệp -virtual- chứ không phải tệp thực.
lá cờ st
Làm cách nào để bạn xác định "tất cả các tệp"? Tất cả các nút? Tất cả các liên kết? Chỉ các tệp thông thường hoặc các tệp đặc biệt? Những loại tập tin đặc biệt? Thư mục tập tin đặc biệt? Nhân vật tập tin đặc biệt? Chặn các tệp đặc biệt? Ổ cắm tập tin đặc biệt? Symlink tập tin đặc biệt? Ống tập tin đặc biệt? Và ở điểm nào? Ví dụ khi bạn cắm chuột vào thì sẽ tự động tạo ra một file ký tự đặc biệt nên tùy vào việc bạn có cắm chuột hay không mà số lượng sẽ khác nhau.
Eric Duminil avatar
lá cờ us
Chỉ tò mò, tại sao bạn cần thông tin này?
terdon avatar
lá cờ cn
Vui lòng [chỉnh sửa] câu hỏi của bạn và làm rõ ý của bạn về "tệp" vì câu trả lời sẽ phụ thuộc rất nhiều vào những gì bạn thực sự muốn tính. Liên kết tượng trưng có nên được tính không? Liên kết cứng có nên được tính là một hoặc hai tệp không? Các thư mục có nên được tính không? Làm thế nào về các tập tin thiết bị? Hoặc đặt tên đường ống? Còn các tệp chỉ sống trong RAM thì sao?
lá cờ in
@Rinzwind nội dung trên tmpfs có thể hoặc không phải là một phần của những gì OP muốn tính ở đây. Các vấn đề lớn hơn là `/sys`, `/proc` và `/dev`, mà OP gần như chắc chắn không muốn tính đến.
Điểm:16
lá cờ in

Sử dụng df -i để xem số lượng nút đã sử dụng -> đã sử dụng cánh đồng.

Hoặc giới hạn đầu ra như:

df --output=nguồn,đích,đã sử dụng

Lưu ý rằng các số từ tìm thấydf -i sẽ không nhất thiết phải phù hợp:

  • df -i cũng tính các thư mục
  • các tệp liên kết đến cùng một inode (liên kết cứng) sẽ chỉ được tính một lần
  • Một số nút đặc biệt không được liên kết với bất kỳ thư mục nào để sử dụng nội bộ sẽ không được tính.
  • df sẽ không đi qua các thư mục được gắn kết, ví dụ: /khởi động hoặc nếu bạn có riêng /Trang Chủ vách ngăn. Với tìm thấy, bạn có thể nhận được hành vi đó bằng cách sử dụng -xdev lá cờ.

Kiểm tra câu trả lời này trên U&L SE.

Tôi hy vọng kết quả sẽ ít hơn một chút so với df -i được tính là một số hệ thống tệp (bao gồm cả ext4) có một số nút đặc biệt không được liên kết với bất kỳ thư mục nào để sử dụng nội bộ.

bac0n avatar
lá cờ cn
Tốc độ của `df -i` Tôi nghi ngờ nó kéo nó từ đâu đó, bạn có biết ở đâu không?
pLumo avatar
lá cờ in
@bac0n [`df` sử dụng lệnh gọi hệ thống `statvfs()` và yêu cầu hệ thống tệp cung cấp số liệu thống kê về không gian hiện tại](https://unix.stackexchange.com/questions/445764/how-does-df-know-how- nhiều-không-gian-được-dùng-mà-không-cần-đi-qua-tất-cả-bộ-phim).
lá cờ vn
`find` và `df -i` sẽ không khớp có thể vì một lý do khác, bởi vì `find` sẽ đi qua các thư mục được gắn kết. Để tránh điều đó, hãy sử dụng `-xdev`, như `sudo find / -xdev â¦`
KeyWeeUsr avatar
lá cờ pl
@PaddyLandau Điểm hay ở phần "được gắn kết". `/` là một phân vùng trên thiết bị, nhưng có thể có nhiều phân vùng hơn hoặc thậm chí các thư mục khác có thể được gắn kết với nhau! Có lẽ OP nên định dạng lại theo cách hệ thống tệp Unix được gắn kết, nếu không, nó có thể là số lượng tệp phân vùng `/` nghiêm ngặt (vì vậy với/không được gắn `/home`, `/boot`, v.v. Có thể một bảng gắn kết trong câu hỏi sẽ giúp ích quá.
pLumo avatar
lá cờ in
Thật! Cảm ơn, tôi đã thêm thông tin này.
Điểm:14
lá cờ tm

Bạn có thể dùng tìm thấy / để liệt kê tất cả các tập tin. Khi đầu ra của find được chuyển hướng, nó sẽ xuất ra các tên tệp có chứa các dòng mới dưới dạng trải rộng trên nhiều dòng, vì vậy bạn không thể chỉ đếm các dòng. Tuy nhiên, bạn có thể xuất một thứ khác cho mỗi tệp và đếm các ký tự:

sudo find / -type f -printf 1 | wc -c

Không có sudo, chắc bạn không vào được hết đường dẫn nên không đếm được hết các file.

lá cờ cn
`locate` nhanh hơn rất nhiều :D nếu bạn không cắt bớt các thư mục
lá cờ cn
đếm inodes có lẽ cũng nhanh hơn.
lá cờ tm
`locate` có quyền truy cập vào tất cả các tệp không?
lá cờ cn
có nhưng bạn có thể sử dụng .conf để loại trừ các thư mục và nó sẽ cắt bớt một số thư mục theo mặc định (như tmpfs và/media)
bac0n avatar
lá cờ cn
nghĩ rằng `locate -c '*'` là số dư có thể chấp nhận được như @Rinzwind gợi ý.
lá cờ cn
Một vấn đề khác: điều này cũng sẽ tính các liên kết mà tôi cho là đúng? Vì vậy, xác định vị trí: D Đếm inodes là một phương pháp tốt hơn
qwr avatar
lá cờ kr
qwr
`tìm` có đếm các thiết bị chặn và các tệp hệ thống đặc biệt không?
Ruslan avatar
lá cờ bv
_"`find` không nên xuất các tệp có dòng mới trong tên của chúng trên nhiều dòng"_ â có tham chiếu nào đến điều này không? Làm thế nào nó nên in trong trường hợp này?
lá cờ tm
@Ruslan: Thử xem. `chạm $'a\nb' ; tìm`
Ruslan avatar
lá cờ bv
`chạm $'a\nb'; tìm | od -tx1` xuất ra `2e 0a 2e 2f 61 0a 62 0a`, chứa `0a` giữa `61` và `62`. Vì mã của bạn trong câu trả lời chuyển đầu ra tới một đường dẫn, nên `wc` sẽ nhận được hai dòng cho tệp này. Bạn cũng có thể xem đầu ra theo đường dẫn bằng cách dẫn đến `cat`: `find | con mèo`.
lá cờ st
Điều này sẽ loại trừ các thư mục, cũng là các tệp.
lá cờ tm
@Ruslan: Đó là lý do tại sao tôi cũng đưa vào lệnh thứ hai.
lá cờ tm
OK, định dạng lại.
lá cờ vn
Tôi nghĩ rằng câu trả lời của bạn nên đề cập đến các thư mục được gắn kết từ các phân vùng khác. Để bao gồm những điều đó, hãy sử dụng câu trả lời của bạn như đã cho (nhưng với `sudo`). Để loại trừ các phân vùng đã gắn kết, hãy sử dụng `-xdev`, như `sudo find / -xdev â¦`. Nó có thể trở nên phức tạp hơn, ví dụ: nếu bạn muốn bao gồm `/home` chứ không phải các phân vùng được gắn kết khác.
Peter Cordes avatar
lá cờ fr
Nếu bạn bỏ qua `-type f`, điều này sẽ tính tất cả các tệp, bao gồm các thư mục, không chỉ các tệp *thông thường*. (Sử dụng `-not -name .` để loại trừ thư mục hiện tại nếu bạn không chỉ định một `/` arg rõ ràng)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.