Làm thế nào tôi có thể làm cho ls chỉ hiển thị các tập tin?


24

Tôi nghĩ rằng phải có một cách để làm cho ls chỉ hiển thị các thư mục, nhưng trang người đàn ông không làm cho nó rõ ràng


Không chắc chắn về ls, nhưng bạn có thể dễ dàng làm điều đó với filelệnh : file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck

1
Một cách khác là lọc đầu ra lsthông qua grep, đại loại như thế ls -1F /directory/containing/the/files | grep -vE /$. Nhưng hãy lưu ý rằng phân tích cú pháp đầu ra của ls có thể khó khăn .
Henning Kockerbeck

Câu trả lời:


37
ls -p | grep -v /

Sử dụng ls -pTell lsđể nối một dấu gạch chéo vào các mục trong thư mục và sử dụng grep -v /Tell grepđể chỉ trả về các dòng không chứa dấu gạch chéo.


Tôi đã kiểm tra câu hỏi này bởi vì đó là câu trả lời yêu thích của tôi (trong khi tôi đã nâng cấp tất cả chúng), nhưng bây giờ cố gắng tìm cách đưa nó vào các cột và đảo ngược thứ tự đầu ra ...
thinkinbinary

"Bạn có thể sử dụng 1 công tắc cho danh sách cột đơn" xin lỗi, tôi đã cố gắng tìm ra những gì bạn có nghĩa là bằng cách đó, tôi sẽ đánh giá cao và gương / giải thích nếu bạn muốn, tôi chỉ biết những gì một công tắc là liên quan đến lập trình C
thinksinbinary

@sdkks Bạn không cần công 1tắc khi đặt đầu ra vì nó sẽ mặc định thành một cột trong tình huống đó. Nếu đó là những gì bạn có nghĩa.
thomasrutter

@thinksinbinary không chắc chắn làm thế nào để biến nó thành nhiều cột nhưng bạn có thể tìm kiếm hoặc đặt câu hỏi riêng của mình và ai đó sẽ biết.
thomasrutter

7

Bạn có thể thử điều này:

find . -maxdepth 1 -not -type d

Và ánh xạ này đến một bí danh đặc biệt.

Nhưng nếu bạn thực sự quan tâm đến việc sử dụng lslệnh, tại đây:

ls -p | egrep -v /$


6

Cách khác:

ls -lAh | grep -v '^d'

Phương pháp này liệt kê trong

  • -l Định dạng danh sách dài
  • -A Hiển thị hầu hết tất cả (hiển thị các tệp ẩn nhưng không hiển thị ...)
  • -h Kích thước tập tin con người có thể đọc được

trong khi grep

  • -v Không hiển thị hồ sơ phù hợp
  • Regular expressionbộ lọc ^d- Bắt đầu bằng chữ d (cho thư mục) tức làdrwxrwxr-x <some file details> <foldername>

Nếu bạn không muốn gõ mỗi lần, bạn có thể biến nó thành bí danh cho hồ sơ bash / shell của mình.


2

Tôi thấy trong nhận xét (@thinksinbinary) của bạn về câu trả lời của @thomasrutter, rằng bạn muốn có thể in chúng theo thứ tự ngược và theo cột. Bạn có thể đã tìm ra nó hoặc di chuyển trên, nhưng đây là:

ls -pr | grep -v / | column
  • -p thêm dấu gạch chéo ('/') vào tên thư mục
  • -r đảo ngược thứ tự đầu ra
  • -v cho phép grep thực hiện tìm kiếm ngược để in mọi thứ trừ các thư mục ( mọi thứ không có '/' mà -p đặt ở đó )
  • " cột đặt nó trong cột" - Captain Rõ ràng

1
Tôi nghĩ thật tuyệt khi trên diễn đàn ubfox mọi người vẫn bình luận và đọc bài viết của bạn sau một thời gian dài. Tôi đã muốn quay trở lại vào linux để tìm hiểu hệ thống lắp ráp và vận hành vì làm như vậy trên windows khó khăn hơn nhiều. Cảm ơn!
thinkinbinary

0
ls -F | grep -v /

Lệnh trên hiển thị các tệp, nhưng nó bao gồm các liên kết tượng trưng, ​​đường ống, v.v ... Nếu bạn cũng muốn loại bỏ chúng, bạn có thể sử dụng một trong các cờ được đề cập dưới đây.

ls -Fgắn các biểu tượng vào tên tập tin Những biểu tượng này cho thấy thông tin hữu ích về các tập tin.

ls -F | grep -Ev '/|@|*|=|>|\|'

Lệnh trên chỉ hiển thị các tập tin.

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.