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ó.
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:
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.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
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.
Để đế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
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 -L
tù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 .
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.
Sử dụng lệnh này cho mỗi thư mục trong đường dẫn
for D in *; do echo $D; find $D -type f| wc -l; done
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
ls
là ý tưởng rất xấu.
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
Tôi sẽ tự đi với tùy chọn này:
ls -alR | grep -c ^ -