Tìm số lượng tập tin trong thư mục và thư mục phụ?


143

Tôi muốn tìm tổng số lượng tệp trong một thư mục và tất cả các thư mục con của nó.

Câu trả lời:


224

Có thể là một cái gì đó như

find . -type f | wc -l

sẽ làm các mẹo. Hãy thử lệnh từ thư mục cha.


3
Giải pháp sẽ thất bại đối với các tệp chứa tên mới.
người dùng không xác định

2
@user không rõ:find . -type f -ls | wc -l
sắp xếp

1
thậm chí nhanh hơn:find . -type f -print0 | tr -d -c '\0' | wc -c
sắp xếp

13
@arrange: thậm chí nhanh hơn: find . -type f -printf . | wc -c- Tôi chấp nhận bản in cho giải pháp của mình thay vì tiếng vang -exec của tôi.
người dùng không xác định

1
Lệnh này hoạt động như một

27

Sử dụng treelệnh. Bạn có thể cần phải cài đặt treegói.

Nó sẽ liệt kê tất cả các tệp và thư mục trong thư mục đã cho và liệt kê một bản tóm tắt ở cuối.


14

Để đếm các tệp (ngay cả các tệp không có phần mở rộng) ở thư mục gốc của thư mục hiện tại, hãy sử dụng:

ls -l | grep ^- | wc -l

Để đếm các tệp (ngay cả các tệp không có phần mở rộng) đệ quy từ thư mục gốc của thư mục hiện tại, hãy sử dụng:

ls -lR | grep ^- | wc -l

1
Những người sẽ không tính các tập tin ẩn.
người dùng không xác định

Thật. Tôi có khuynh hướng chấp nhận và sử dụng câu trả lời của bạn làm giải pháp.
dùng38537

13

Cách nhanh nhất và dễ nhất, là sử dụng tree. Tốc độ của nó bị giới hạn bởi thiết bị đầu cuối đầu ra của bạn, vì vậy nếu bạn đưa kết quả đến tail -1, bạn sẽ nhận được kết quả ngay lập tức. Bạn cũng có thể kiểm soát mức độ thư mục bạn thích kết quả, sử dụng -Ltùy chọn. Đối với đầu ra màu, sử dụng -C. Ví dụ:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Nếu nó chưa có ở đó, bạn có thể lấy nó ở đây .


9
find -type f -printf . | wc -c

Đừng đếm các dòng đầu ra, vì tên tệp, chứa 99 dòng mới, sẽ được tính là 100 tệp.


4
Tên tập tin chứa dòng mới là một trường hợp cạnh cực kỳ hiếm.
Không hài lòngGoat

8
@DisgruntledGoat: Vì vậy, một lỗi sẽ cực kỳ khó tìm.
người dùng không xác định

Tôi thích một trường hợp cạnh tốt, đặc biệt là nhiều năm sau.
dùng38537


1

find dường như nhanh hơn cây nên tôi đã sử dụng bên dưới để đếm các tệp trong mỗi thư mục của thư mục làm việc hiện tại (bỏ qua các tệp trong CWD) với việc cho phép các thư mục có khoảng trắng:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done


Phân tích đầu ra của lsý tưởng rất xấu.
souravc

Mã tuyệt vời, làm cách nào tôi có thể sắp xếp các dòng đầu ra nói về số lượng tệp tăng hoặc giảm
nightcrawler

0

Bạn có thể dùng find . | wc -l

find .sẽ liệt kê tất cả các tệp và thư mục và nội dung theire bắt đầu trong thư mục hiện tại của bạn.
wc -lđếm kết quả tìm kiếm


Giải pháp này cũng tính các thư mục, tôi đã đánh dấu vì nó phù hợp với dịp của tôi mà tôi không muốn đếm chúng :)
cởi trần

Giải pháp sẽ thất bại đối với các tệp chứa tên mới.
người dùng không xác định

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.