it-swarm-vi.com

Có tùy chọn nào với lệnh 'ls' mà tôi chỉ thấy các thư mục không?

Đôi khi, tôi chỉ cần kiểm tra các thư mục không phải tập tin. Có tùy chọn nào với lệnh ls không? Hoặc có bất kỳ tiện ích để làm điều đó?

CHỈNH SỬA : Tôi đang sử dụng Mac OS X và ls -d đưa cho tôi . mặc dù tôi có thư mục.

86
prosseek

Tôi biết đã có câu trả lời được chọn, nhưng bạn có thể nhận được hành vi được yêu cầu chỉ với ls:

ls -ld -- */

(Lưu ý rằng '-' đánh dấu sự kết thúc của các tham số, ngăn tên thư mục bắt đầu bằng dấu gạch nối không được hiểu là các tùy chọn lệnh tiếp theo.)

Điều này sẽ liệt kê tất cả các thư mục không bị ẩn (trừ khi bạn định cấu hình các khối của Shell để mở rộng chúng) trong thư mục làm việc hiện tại nơi nó được chạy (lưu ý rằng nó cũng bao gồm các liên kết tượng trưng đến các thư mục). Để có được tất cả các thư mục con của một số thư mục khác, chỉ cần thử:

ls -ld /path/to/directory/*/

Lưu ý rằng -l là tùy chọn.

96
Steven D

Không, nhưng một lệnh find đơn giản sẽ thực hiện:

find . -type d -depth 1

hoặc grep

ls -F | grep /

Sau đó, bạn có thể bí danh một trong những nếu cần thiết.

16
gvkv

Tôi cũng cần xem các thư mục ẩn vì vậy đã sửa đổi đề xuất ở trên để phù hợp với nhu cầu của tôi

ls -d -- */ .*/

(tùy thuộc vào Shell, cũng có thể bao gồm ...)

7
Neil Chandler

Tôi thích tiện ích cây để có cái nhìn tổng quan về cấu trúc thư mục. Nó có sẵn trong MacPorts và tất cả các bản phân phối Linux mà tôi đã thử.

tree -d -L 2

Điều đó sẽ hiển thị tất cả các thư mục, hai cấp độ sâu.

7
Claes Mogren

Với zsh (như được tìm thấy theo mặc định trên macOS, nó thậm chí còn được sử dụng là /bin/sh there), bạn sẽ sử dụng vòng loại toàn cầu để chọn các tệp dựa trên loại của chúng:

  • Liệt kê các thư mục không bị ẩn:

    ls -d -- *(/)
    
  • Liệt kê tất cả các thư mục:

    ls -d -- *(D/)
    

    (... luôn bị loại trừ, thêm chúng riêng lẻ nếu bạn muốn)

  • Cũng bao gồm các liên kết tượng trưng đến thư mục:

    ls -d -- *(D-/)
    

    (- làm cho vòng loại tiếp theo được áp dụng sau khi phân giải symlink).

3
Stéphane Chazelas

Không chỉ có một tùy chọn để liệt kê các thư mục ...

Nhưng bạn có thể sử dụng -d (tự liệt kê các thư mục, không phải nội dung của chúng) và */ để khớp chính các thư mục:

ls -d */

Và cố gắng sử dụng dấu chấm, cho những dấu ẩn, ls -d .*/.

Chỉ để cho vui, hãy thử: ls -dls */. Sự khác biệt sẽ rõ ràng!

Tham chiếu:

0
marcio