Câu trả lời:
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
Về mặt kỹ thuật, điều đó là không thể ls
, nhưng find
có thể thực hiện cùng một công việc với công -printf
tắc của nó :
find -maxdepth 1 -printf '%t %s %p\n'
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 đó ...
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
$
ls -l
sử 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 ' '
Một ls
cá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 %12s
phải, chiều dài 12);
%n
= tên tệp ( %-16n
că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
, stat
khô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ụ.)
stat -f '%N %Sm %z' filename
Sự thay đổi nhỏ
ls -lh | cut -f 6- -d ' '