Chỉ liệt kê kích thước tệp và tên và liên kết tượng trưng


8

Khi tôi sử dụng, ls -lahtôi nhận được rất nhiều thông tin cho mỗi tập tin.

Làm thế nào tôi chỉ có thể nhận được tên và kích thước tập tin?

Ngoài ra, tôi muốn giữ danh sách các liên kết tượng trưng bằng mũi tên như

lrwxrwxrwx  1 rubo77    rubo77       4 Nov 21 01:53 test2 -> test

Câu trả lời:


5

Chọn cột để in bằng awk

Một phương pháp sẽ là phân tích đầu ra của ls.

Thí dụ

$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K

Nhân tiện, bạn có thể dọn sạch đầu ra bằng cách sử dụng column.

$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z                                                   4
.youtube-dl                                         4.0K
.zenmap                                             4.0K
.zshrc                                              32
zzzz                                                3.3K

Chọn cột để xóa bằng awk

Nếu bạn muốn loại bỏ các cột khác, trong khi giữ các cột khác, bạn có thể sử dụng awkphương pháp này để xóa các cột không mong muốn.

Thí dụ

$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
    4.0K    .youtube-dl
    4    z -> zzzz
    4.0K    .zenmap
    32    .zshrc
    3.3K    zzzz

Giải pháp cuối cùng

OP đã đưa ra chuỗi lệnh này, sử dụng kết hợp các ví dụ từ phía trên.

$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column 
...
4.0K  .gphoto              773   .rdebug_hist     4.0K  .youtube-dl
1.5K  .grip                4.0K  .rdesktop        4     z->zzzz

thật tuyệt, nếu tôi sử dụng ls -lah | awk '{print $5, $9$10$11}'|columntôi sẽ có được thứ tôi muốn
rubo77

@ rubo77 - xem các bản cập nhật, để biết phương pháp khác để loại bỏ các cột không mong muốn.
slm

bạn nên cắt từng dòng và gửi nó đếncolumn
rubo77

Chiến lược awk của bạn không bảo tồn sự liên kết. Những cái sử dụng tên tệp bao gồm cắt ngắn cột chứa khoảng trắng; một trong những loại bỏ cột không có khiếm khuyết này. Ngoài ra đường ống vào một lệnh khác triệt tiêu màu sắc mà nhiều người sử dụng.
Gilles 'SO- ngừng trở nên xấu xa'

Nếu bạn mong đợi các tệp có khoảng trắng ở đầu hoặc cuối, bạn có thể sử dụng ls -lahQđể trích dẫn tên tệp thay thế
rubo77

2

Từ trang người đàn ông:

  -s, --size
          print the allocated size of each file, in blocks

Vì vậy, đối với kích thước có thể đọc được của con người:

ls -sh

Tôi đang tìm kiếm điều này để tìm một giải pháp cho Làm thế nào tôi có thể liệt kê tất cả các tệp và liên kết tượng trưng trong một chế độ xem nhỏ gọn? Vì vậy, điều này có vẻ đầy hứa hẹn, nhưng nó không hiển thị các mục tiêu liên kết tượng trưng như tôi đã hy vọng, giống như tôi đang làm. (Tôi đã thêm câu hỏi này vào câu hỏi)
rubo77

nếu bạn cũng muốn xem các tập tin ẩn, hãy sử dụngls -ash
rubo77

2

Một cách nhanh chóng và bẩn thỉu là kết hợp đầu ra của ls -lahvới một vài lệnh khác:

ls -lah | tr -s ' ' | cut -d' ' -f5,9-

Các tr -slệnh thay thế nhiều không gian với không gian duy nhất, và cut -d' ' -f5,9-in các cột 5 và 9 (và xa hơn nữa). Các 9-yêu cầu vào tài khoản cho các cột không gian tách ra thêm sản xuất bởi liên kết tượng trưng.


Nếu tôi cố gắng phân loại các liên kết tượng trưng được kéo dài tại mũi tên:ls -lah | tr -s ' ' | cut -d' ' -f5,9- | column -t | column
rubo77

Vâng, câu hỏi của bạn không nói gì về việc in trong các cột.
Greg Hewgill


1

Cách gần nhất bạn có thể nhận được lschỉ là chặn các cột người dùng và nhóm ls -log. Nếu bạn muốn đi xa hơn, bạn có thể phân tích đầu ra. Coi chừng cột thứ hai (số liên kết) có chiều rộng thay đổi. Đoạn mã sau đây cẩn thận để duy trì căn chỉnh cột, đối phó với tên tệp tùy ý (ngoại trừ dòng mới nếu chúng được truyền theo nghĩa đen) và hiển thị đầu ra có màu (loại bỏ phần đó nếu bạn không chạy GNU coreutils).

if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'

Có thể có được cột này như ls mà không có tùy chọn không?
rubo77

@ rubo77 Các cột không chơi quá tốt với việc hiển thị các mục tiêu liên kết tượng trưng, ​​có xu hướng khá rộng. Nếu bạn thực sự muốn nó, đường ống thông quacolumn là cách để đi.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời này cũng tốt, bạn có thể sử dụng:ls -halog --color=no | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'|column
rubo77

nhưng câu trả lời của slm awkdễ nhớ hơn
rubo77
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.