Câu trả lời:
Tại sao không sử dụng stat
thay thế ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, bạn có thể thêm thông tin chiều rộng vào chuỗi định dạng như hàm C printf, ví dụ: "%y %8s %n"
nó không được ghi lại, nhưng có vẻ như hoạt động (coreutils 8.17, Fedora 18)
ls
tôi có thể xuất nó với một nghìn char phân cách. Làm thế nào nó làm việc với stat
?
ls
. Màu sắc thì sao ??
Bạn có thể có nhiều quyền kiểm soát về cách bạn liệt kê các tệp với find
tiện ích. ls
không thực sự cho phép bạn chỉ định các cột bạn muốn.
Ví dụ:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
Đối số cho printf
hành động là một chi tiết trong trang. Bạn có thể chọn thông tin thời gian khác nhau, kích thước bạn muốn (kích thước tệp hoặc khối đĩa được sử dụng), v.v. Bạn cũng có thể đảm bảo an toàn cho tên tệp bất thường nếu cần xử lý thêm.
%C+
(đầu ra "2016-08-29 + 10: 57: 56.9201257840") và %Cc
(đầu ra "Mo 29 tháng 8 năm 2016 10:57:56 CEST")
Bạn luôn có thể sử dụng một tiện ích khác như awk
định dạng đầu ra của ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Có, nói chung, bạn không nên phân tích đầu ra của ls nhưng trong trường hợp này, câu hỏi đặc biệt gọi cho nó ...
ls
được đặt bí danh (nói alias ls='ls -i'
). Bạn thực sự cần phải cẩn thận nếu bạn muốn phân tích cú pháp đầu ra ls.
ls
, nhưng đó là những gì OP muốn ...
/bin/ls
sẽ tránh được vấn đề bí danh.)
ls
mà cả hai chúng tôi đồng ý sẽ không thỏa mãn yêu cầu về khoảng trắng. Các /bin/ls
gợi ý là một tốt nhất.
-h
để làm cho nó có thể đọc được. Cụ thể tôi đã sử dụng: ls -lah | awk '{print $5,$6,$7,$8}'
sản lượng nào : 4.0K Jan 24 18:17
. Cấp, giải pháp ban đầu không nói gì về awk, nhưng trong linux chúng ta nên cho rằng đầu ra của một tiến trình sẽ luôn là đầu vào cho một tiến trình khác, phải không? ;)
Bạn cũng có thể sử dụng lệnh 'ngày'. Nó rất dễ sử dụng:
ngày -r [tên tệp]
date -r foo*.txt
->date: extra operand "foo2.txt"
trong đó không gian được định nghĩa là dấu phân cách và f6 có nghĩa là trường 6
ls -lt | cut -d" " -f6-
Bạn có thể dẫn hai lệnh
ls -l|cut -d" " -f5
ls
là tuyệt vời vì nó có sắp xếp rất nhanh theo datetime, nhưng định dạng khó xử lý. Tôi khuyên bạn nên sử dụng mã thông báo theo kiểu - thời gian như--time-style='+&%Y%m%d+%H%M%S.%N'
mã thông báo là '&', sử dụng đó làm tham chiếu, bạn có thể phân tích cú pháp đầu rased
để bạn cũng có thể quay lại như trước khi mã thông báo có kích thước! Nếu ai đó muốn đăng nó như một câu trả lời hoàn chỉnh, hãy thoải mái, tôi quá buồn ngủ ngay bây giờ :)