Trên máy chủ Linux mà tôi làm việc cùng, quy trình ghi các tệp được đặt tên ngẫu nhiên vào các khoảng thời gian ngẫu nhiên. Dưới đây là một ví dụ nhỏ, hiển thị kích thước tập tin, ngày sửa đổi & thời gian, và tên file:Làm cách nào để tổng hợp các kích thước tệp cùng nhau trong bash, nhóm các kết quả theo ngày?
27659 2009-03-09 17:24 APP14452.log
0 2009-03-09 17:24 vim14436.log
20 2009-03-09 17:24 jgU14406.log
15078 2009-03-10 08:06 ySh14450.log
20 2009-03-10 08:06 VhJ14404.log
9044 2009-03-10 15:14 EqQ14296.log
8877 2009-03-10 19:38 Ugp14294.log
8898 2009-03-11 18:21 yzJ14292.log
55629 2009-03-11 18:30 ZjX14448.log
20 2009-03-11 18:31 GwI14402.log
25955 2009-03-12 19:19 lRx14290.log
14989 2009-03-12 19:25 oFw14446.log
20 2009-03-12 19:28 clg14400.log
(Lưu ý rằng đôi khi kích thước tập tin có thể không.)
Những gì tôi muốn là một kịch bản bash để tổng hợp kích thước của các tập tin, chia nhỏ theo ngày, sản xuất ra một cái gì đó như thế này (giả sử số học của tôi là chính xác):
27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12
Kết quả sẽ hiển thị xu hướng hoạt động theo thời gian, và làm nổi bật những ngày đặc biệt bận rộn.
Trong SQL, các hoạt động sẽ là một cinch:
SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;
Bây giờ, đây là tất cả có lẽ là khá dễ dàng trong Perl hay Python, nhưng tôi thực sự muốn một vỏ bash hoặc dung dịch awk. Nó có vẻ đặc biệt khó khăn với tôi để nhóm các tập tin theo ngày trong bash (đặc biệt là nếu bạn không thể giả định một định dạng ngày cụ thể). Tổng hợp các kích thước có thể được thực hiện trong một vòng lặp tôi giả sử, nhưng là có một cách tiếp cận dễ dàng hơn, thanh lịch hơn,?
thực sự bạn có thể giả dạng ngày với ls -lt --time-style = +% F – vartec
Vâng, cảm ơn vì điều đó. Cùng với giải pháp từ @ashawley, tất cả đều kết hợp với nhau. – yukondude