Cách dễ nhất để loại bỏ tổng số <size> đường ra khỏi đầu ra của ls -l là gì?


14

Điều tốt nhất tôi có thể tìm thấy thông qua Google / man lslà:

ls -l | grep -v '^total'

Có cái gì tôi đang thiếu trong các cờ ls?

Ngoài ra, tại sao tổng kích thước tính bằng kb, không phụ thuộc vào cờ -h? cào nó, có vẻ như nó làm, không chắc chắn những gì tôi đã nhìn thấy sau đó.


4
Có lẽ hiệu quả hơn một chút ls -l | tail -n+2, phần còn lại tôi không có câu trả lời.
enzotib

Tôi thích phương pháp của enzotib hơn. Gợi ý: thiết lập nó như một bí danh và đặt tên cho nó lsl. Chỉ cần 3 chữ cái;) oh và ls -lh hiển thị cho tôi kích thước theo kiểu 1,2K.
Rinzwind

Tôi nghĩ rằng bạn đã nhận được cách dễ dàng nhất.
Robert

Câu trả lời:


11

Nhìn vào mã nguồn của coreutils, tôi phát hiện ra rằng totalsẽ luôn được hiển thị khi sử dụng -ltùy chọn trên các thư mục .

Sử dụng -dtùy chọn để liệt kê các mục thay vì ẩn nội dung thư mục total. Nhưng nếu bạn chạy mà không có đối số (hoặc trên một thư mục), nó sẽ chỉ hiển thị thư mục chứ không hiển thị nội dung của nó. Do đó, bạn cần ký tự đại diện. *cũng khớp với tất cả các tệp và .*khớp với các tệp ẩn (tương ứng với -atùy chọn):

ls -ld * .*

Đối với các -htùy chọn, nó làm việc cho tôi. 1118360 byte hiển thị là 1,1M. Các tệp nhỏ hơn 1024 hiển thị theo byte.


1
thực sự -d liệt kê các thư mục thay vì các mục.
H2ONaCl

@broiyan Bạn có thể đưa lstrang hướng dẫn vào thư hoặc xem xét điều này: ls /có thể được hiểu là "liệt kê mục nhập /nếu đó là một tệp hoặc nội dung thư mục /nếu nó là một thư mục". Việc sử dụng -dloại bỏ điều kiện cuối cùng và sẽ luôn in mục thay vì nội dung thư mục. Điều này áp dụng không có vấn đề nếu một đường dẫn là một tập tin hoặc thư mục.
Lekensteyn

Tôi sẽ nâng cấp điều này một lần nữa nếu tôi có thể
dps

6

Sử dụng ký tự đại diện để tránh lschạy danh sách thư mục là tối ưu, bởi vì nó ngăn bạn sử dụng lscác tùy chọn như --almost-all.

Giống như đề xuất của Enzotib , cách đơn giản nhất để loại bỏ nó là đưa nó qua tailđể cắt đứt dòng đầu tiên. Tuy nhiên, lssẽ phát hiện ra rằng đầu ra của nó là một đường ống chứ không phải tương tác và thay đổi mặc định của nó theo một cách không mong muốn. Do đó, để làm cho nó mạnh mẽ, bạn cũng nên thêm một số tùy chọn:

  • --color=always: tiếp tục hiển thị màu sắc
  • --hide-control-chars: in ?tên tệp thay cho các ký tự điều khiển có thể làm rối đầu ra của giao diện điều khiển

Tôi có một tập lệnh ~/bin/l(bạn cũng có thể sử dụng bí danh Bash trong ~/.bash_aliases):

#!/bin/bash
ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Bạn cũng có thể thêm bất kỳ lstùy chọn nào bạn muốn theo mặc định, ví dụ --group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash.


Tuy nhiên, điều này sẽ không hoạt động nếu bạn chuyển nhiều tên tệp cho ls.
Sparhawk

2

ls -l *

Sẽ cung cấp cho bạn nội dung thư mục "thường được đặt tên" mà không có total. Điều đó có thể phù hợp với nhu cầu của bạn. Thật không may, nó sẽ không cung cấp cho bạn các dottập tin tiền tố. Nếu bạn sử dụng, ls -l * .*bạn sẽ nhận được một mớ hỗn độn vì linux sẽ điều hướng lên cây.

Lưu ý tiền tố dấu chấm có thể có nghĩa là thư mục hoặc với ký tự đại diện, nó có nghĩa là thư mục trên để nó không giúp bạn chọn các tệp thông thường có tiền tố chấm. Đây dường như là một quyết định thiết kế đáng tiếc.


0

$ ls -l [DIRECTORY] | sed 1d
(đầu ra chứa tên tệp)

$ ls -ld [path-to-dir]/*
(đầu ra chứa các đường dẫn tương đối nhưng sẽ giữ nguyên màu sắc)

$ ls -l [DIRECTORY] | tail -n +2

$ ls -l [DIRECTORY] | awk 'NR>=1'


Lưu ý:
Điều sau đây không hoạt động nếu bạn có một tệp có tên "tổng ...."

$ ls -l | grep -v '^total'

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.