Muốn sắp xếp tệp theo ngày cập nhật bao gồm các thư mục con


17

Tôi muốn chỉ sắp xếp các tệp theo ngày cập nhật bao gồm các thư mục con.

Tôi phát hiện ra ls -lrtR | grep ^-. nhưng nó dường như không sắp xếp theo ngày cập nhật.

Và tôi cần lưu danh sách này vào một tập tin. Có thể không?

Apr 01 2010  InsideDoosanServiceImpl.class  // in A directory
Apr 08 2010  MainController.class  // in B directory
Apr 07 2010  RecommendController.class  // in B directory
Apr 01 2010  MainDao.class  // in B directory

Ý tôi là toàn bộ danh sách không được sắp xếp theo ngày, nhưng trước tiên được sắp xếp theo thư mục và được sắp xếp theo ngày.

Tôi muốn một danh sách đầu tiên được sắp xếp theo ngày bao gồm tất cả các thư mục con.

Câu trả lời:


12

Tôi không chắc chính xác ý bạn là gì update dates, nhưng bạn đang sử dụng -rtùy chọn mà theo con người thực hiện điều này -

-r Đảo ngược thứ tự sắp xếp để có thứ tự từ điển đảo ngược hoặc các mục cũ nhất trước (hoặc các tệp lớn nhất cuối cùng, nếu được kết hợp với sắp xếp theo kích thước

Tôi nghĩ rằng điều này là đủ tốt cho bạn nếu bạn cần các tập tin được sắp xếp theo thời gian.

ls -lRt

Nếu bạn không cần tất cả những thứ khác được liệt kê trước lsthì bạn có thể sử dụng -

ls -1Rt

Để chụp kết quả trong một tệp, bạn có thể sử dụng toán tử chuyển hướng >và đặt tên tệp. Vì vậy, bạn có thể làm một cái gì đó như thế này -

ls -lRt > sortedfile.list

Cập nhật:

find . -type f -exec ls -lt {} +

Ý tôi là lần cuối cùng một tập tin được sửa đổi :)

Sắp xếp kết quả được sắp xếp theo thư mục và ngày. Tôi muốn sắp xếp theo ngày và thư mục .. có thể không?

Xin lỗi, bạn có thể vui lòng chỉ cho tôi một số đầu ra? Tôi không hoàn toàn tuân theo việc sắp xếp thư mục nếu bạn sử dụng ls -lrt.
jaypal singh

// Jaypal Singh, tôi đã cập nhật kết quả đầu ra của mình :). Tôi thực sự hy vọng bạn hiểu nó và xin lỗi vì tiếng Anh không tốt của tôi.

1
Điều này không thành công nếu danh sách tệp đủ dài để buộc xargsthực hiện nhiều cuộc gọi đến ls, bởi vì sau đó các tệp chỉ được sắp xếp đúng trong mỗi lệnh lsgọi nhưng thiếu thứ tự toàn cục nhất quán trong đầu ra.
Brandon Rhodes

19

Với ls, -R sẽ lặp lại các thư mục và -t sẽ sắp xếp theo sửa đổi. Tuy nhiên, nó đi qua các thư mục theo cách đệ quy và áp dụng -t cho mỗi thư mục. Nó không tích lũy tất cả các tệp từ tất cả các thư mục và sau đó sắp xếp. (Theo như tôi hiểu, cái sau là thứ bạn muốn)

Với gnu find (1), bạn có thể chỉ định định dạng đầu ra để bao gồm số giây kể từ epoch và tên tệp, sau đó bạn có thể đặt đường dẫn này để sắp xếp (1).

find . -type f -printf "%T@ %f\n" | sort -n > out.txt

Phải GNU findgiúp. Nhưng OP hoạt động trên AIXmáy móc nên GNU findkhông có sẵn cho anh ta.
jaypal singh

Thật tệ khi lskhông thể thực hiện để tích lũy tệp trước khi sắp xếp. lsquá nhanh so với find.
Nathan GoFundMonica Arthur

lsfindđọc cùng một dữ liệu, vì vậy tôi không thể tưởng tượng bất kỳ lý do nào nên nhanh hơn đáng kể so với tìm kiếm. Trên hệ thống của tôi, tìm kiếm nhanh hơn gấp 5 lần (tìm kiếm trong khoảng nửa triệu tệp)
Rolf Rander

7
Bạn có thể muốn có một ngày / thời gian đầy đủ và không chỉ tên tệp mà cả đường dẫn trong đầu ra, trong trường hợp đó, sửa đổi chuỗi định dạng: find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txtmang lại các mục đầu ra như thế nào 1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt.
Carl

Tuyệt quá. Điều đó thực sự giúp tôi ra ngoài. Tôi đã tìm kiếm một cách để sắp xếp vào các thư mục con từ lâu!
bhu Boue vidya
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.