Cách đếm số lượng tệp trong một thư mục nhưng không được đệ quy


30

Câu hỏi đơn giản tôi chắc chắn. Tôi đã thấy một câu trả lời chỉ ra cách thực hiện bao gồm các thư mục con, nhưng tôi muốn biết có bao nhiêu tệp (không phải thư mục) chỉ trong thư mục hiện tại. Cảm ơn.

Câu trả lời:


60
ls -F |grep -v / | wc -l
  1. ls -F liệt kê tất cả các tệp và chỉ báo nối thêm (một trong * / => @ |) vào các mục
  2. grep -v /giữ tất cả các chuỗi de không chứa dấu gạch chéo
  3. wc -l đếm dòng

Danh sách tất cả mọi thứ trừ thư mục.
thom

Tôi thực sự đánh giá cao bạn phá vỡ nó và giải thích các phần, cảm ơn bạn đã trả lời làm việc và giải thích tốt!
bcsteeve

1
Trong khi tất cả các câu trả lời giải quyết vấn đề của tôi, tôi chọn câu hỏi này là tài liệu và dễ hiểu nhất đối với tôi. Nhưng cảm ơn mọi người!
bcsteeve

15

Hãy thử oneliner này:

find -maxdepth 1 -type f | wc -l

Điều này là tốt, chỉ có tập tin và không có gì khác :-)
thom

Điều này bỏ qua các liên kết và các thiết bị nhân vật đặc biệt.
ojblass

Tất cả các câu trả lời ở đây làm việc tuyệt vời! Vì vậy, đầu tiên, CẢM ƠN BẠN. Thứ hai ... làm thế nào để tôi chọn?
bcsteeve

6

Thử đi

ls -al | grep ^[-] | wc -l
  1. ls -al - liệt kê tất cả các tập tin với định dạng danh sách dài
  2. grep ^[-] - tìm kiếm chuỗi bắt đầu bằng "-" là ký hiệu để biểu thị tệp thông thường khi danh sách tệp có ls -al
  3. wc -l - dòng đếm

Còn liên kết mềm thì sao? Những gì về các tập tin liên kết cứng?

Đẹp một, chỉ có tập tin và liên kết, không có gì khác.
thom

Đối với đường dẫn liên kết mềm / cứng thay thế -bằngl
andr3w

Tôi thực sự đánh giá cao bạn phá vỡ nó và giải thích các phần, cảm ơn bạn đã trả lời làm việc và giải thích tốt!
bcsteeve

2

Tôi chỉ muốn thêm câu trả lời của thom vì tôi thích chơi với Bash . Nó đi từ đây:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Bellow là một kết quả ví dụ của /datathư mục của tôi :

Directory /data has 580569 file(s).

Và dưới đây là những lời giải thích của tôi:

  1. echo double-quoted-message sẽ in một thông điệp mong muốn.
  2. $(any-desirable-valid-command)bên trong thông báo được trích dẫn kép của một echosẽ in kết quả thực hiện lệnh liên quan.
  3. pwd sẽ in thư mục hiện tại.
  4. ls -Flà để liệt kê tất cả các tệp và chỉ báo nối thêm (một trong * / => @ |) vào các mục. Tôi đã sao chép điều này từ câu trả lời của thom .
  5. grep -v / là một lệnh để tìm kiếm văn bản đơn giản, -v / tham số sẽ giữ tất cả các chuỗi không chứa dấu gạch chéo.
  6. wc -l sẽ in dòng đếm.

Tôi biết câu hỏi này đã 3 tuổi, tôi không thể thôi thúc thêm câu trả lời khác.


2

Nếu bạn đã treecài đặt trên hệ thống của mình, bạn có thể sử dụng lệnh này:

tree -L 1 /path/to/your/directory | tail -n 1

Nó cho bạn thấy số lượng tập tin và thư mục trong thư mục đó.

-L n cho thấy độ sâu của tìm kiếm.

Bạn có thể cài đặt treevới sudo apt-get install tree.


-3

Để đếm tổng số tệp có phần mở rộng cụ thể, bạn có thể nhập:

ls|grep jpg |wc -l
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.