Làm cách nào để giới hạn đầu ra của ls chỉ hiển thị tên tệp, ngày và kích thước?


25

Làm cách nào tôi có thể sử dụng lstrong linux để chỉ có một danh sách tên và kích thước tên tệp? Tôi không cần phải xem các thông tin khác như chủ sở hữu, sự cho phép.


chúng ta đang nói về Linux nào?
Tolican

máy chủ apache ..

Câu trả lời:


26

ls -l | awk '{print $5, $6, $7, $9}'

Điều này sẽ in kích thước tệp theo byte, tháng, ngày và tên tệp.

jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 bar
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 baz
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 quux

jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux

@Sosukudo Vâng, tôi cũng không chắc. Nhưng mọi người dường như đồng ý rằng việc chấp nhận những câu hỏi không hay nhưng không phải là câu trả lời nếu chúng hữu ích. meta.stackexchange.com/questions/98197/ Mạnh
Jin

@Sosukodo: hãy thoải mái upvote ngay bây giờ :)
sehe

6
không hỗ trợ tên tệp có nhiều khoảng trắng
meso_2600

12

Về mặt kỹ thuật, điều đó là không thể ls, nhưng findcó thể thực hiện cùng một công việc với công -printftắc của nó :

find -maxdepth 1 -printf '%t %s %p\n'

1
Đề xuất của bạn là người chiến thắng của tôi và tôi khuyên mọi người nên quan tâm đến nhiều lĩnh vực hơn cho bản in mà họ RTFM. Ví dụ: hiển thị cho tôi quyền cho tất cả các tệp không phải là thư mục: find usr/lib/ -not -type d -printf '%M %p\n đầu ra: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Dạy một người đàn ông câu cá và tất cả những điều đó ...
Craig

Câu hỏi liên quan đến linux vì vậy không phải là câu trả lời vô lý, nhưng đối với bản ghi này yêu cầu GNU tìm.
Dan Pritts

5

bạn luôn có thể làm:

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file1
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file2
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file3
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file4
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file5
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file6
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file7

cut nó để:

$ ls -l | cut -f 8-13 -d ' '

0 Oct  6 23:29 file1
0 Oct  6 23:29 file2
0 Oct  6 23:30 file3
0 Oct  6 23:30 file4
0 Oct  6 23:30 file5
0 Oct  6 23:30 file6
0 Oct  6 23:30 file7

$ 

4
không hoạt động với: quyền sở hữu biến, nhóm, kích thước tệp
meso_2600

Cắt không thu gọn các dấu phân cách liên tiếp, trong đó ls -lsử dụng phần đệm khoảng trắng. Nếu các cột của bạn không có độ dài đồng nhất (cột 5, kích thước tệp thường sẽ không), cắt sẽ không chọn cột chính xác. Thu gọn các khoảng trắng liên tiếp sẽ giúp ích (coi chừng khoảng trắng trong tên tệp). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave

4

Một lscách khác:

> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200         10485760    tmp.1           |
2017-06-15 10:41:25.659570000 +0200              666    tmp.TKPzm3BfRw  |

Giải thích: %y= ngày sửa đổi có thể đọc được của con người; %s= kích thước tính theo byte (căn %12sphải, chiều dài 12); %n= tên tệp ( %-16ncăn lề trái, dài 16); \t= tab, \n= nguồn cấp dữ liệu. |= charal pipe char, chỉ để hiển thị phần cuối của tên tệp.

Giống như ls, statkhông có tùy chọn để chọn tập tin nào sẽ hiển thị. (Điều đó có thể được thực hiện bằng cách ghép vỏ như hình trên hoặc một số find ... -print0 | xargs -r0 stat ...ví dụ.)


Câu hỏi là về linux, vì vậy câu trả lời của bạn là tốt, nhưng với bất kỳ ai quan tâm, đây là một câu hỏi tương đương với FreeBSD stat. stat -f '%N %Sm %z' filename
Dan Pritts

2

Sự thay đổi nhỏ

ls -lh | cut -f 6- -d ' '

1
Quan tâm để giải thích những gì các biến thể thêm?
Ivo Flipse

Chỉ cần loại bỏ sự cần thiết phải chỉ định số lượng trường kết thúc bằng cách sử dụng số 6 thay cho 6-x
zzapper
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.