Bạn nói rằng " ls lên đầu mất một thời gian dài để hoàn thành".
Nguyên nhân của việc này không phải ls
, mà là số lượng tệp trong thư mục của bạn. Nếu bạn có 100.000 tệp trong một thư mục, mọi cách giải quyết vấn đề này sẽ phải lấy thông tin về tất cả 100.000 tệp trước khi có thể nghĩ đến việc sắp xếp chúng hoặc in bất kỳ đầu ra nào.
Nếu mất quá nhiều thời gian, giải pháp thực sự là phân chia các tệp trên nhiều thư mục.
Nếu bạn không thể truyền bá các tệp qua một số thư mục, có cách nào để bạn có thể thu hẹp số lượng tệp cần xem xét không? ví dụ: nếu tên tệp bao gồm một ngày, có thể bạn có thể bao gồm ký tự đại diện để hệ thống không phải sắp xếp 100.000 tệp. Hoặc có thể chúng được đánh số liên tục? (Điều này có thể hoặc không thể giúp đỡ, nhưng đáng để thử.)
Bao nhiêu lần bạn đang cố gắng để làm điều này? Có lẽ nó đáng để lưu / lưu trữ đầu ra để sử dụng lại .
Bây giờ, một câu hỏi.
Bạn có phải chắc là bạn có nghĩa là "thời gian sáng tạo" chứ không phải "thay đổi thời gian" ? Hầu hết các công cụ chỉ có thể hiển thị "thay đổi thời gian", không phải "thời gian tạo".
Có được "thời gian tạo" là một điều rất mới, đòi hỏi một hệ thống tập tin ext4 và một số công cụ không dễ cài đặt.
Nếu bạn muốn thay đổi thời gian
Thay đổi thời gian (viết tắt là ctime) có nghĩa là thời gian các thuộc tính của tệp thay đổi lần cuối.
ls -c
sắp xếp theo ctime.
Bạn muốn đầu ra theo thứ tự tăng dần, không giảm dần, vì vậy bạn cần đảo ngược đầu ra với -r
tùy chọn.
Vì vậy, bạn có thể làm điều đó như thế này:
ls -cr | head -n 100
Một giải pháp dài hơn cho cùng một vấn đề bằng cách sử dụng stat
:
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%Z\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
nhưng nó chạy chậm hơn ls -cr
trên hệ thống của tôi.
Nếu bạn muốn thời gian sửa đổi
Thời gian sửa đổi (viết tắt là mtime) có nghĩa là thời gian nội dung của tệp thay đổi lần cuối.
ls -t
sắp xếp theo mtime.
Thay đổi ls -cr
thành ls -tr
(tùy chọn tốt nhất) hoặc thay đổi stat -c $'%Z\t%n'
thành stat -c $'%Y\t%n'
.
Nếu bạn cần thời gian sáng tạo
(viết tắt của crtime)
Cái này khó hơn.
Đầu tiên, đảm bảo thư mục nằm trên một hệ thống tệp được định dạng bằng ext4
. Bạn có thể sử dụng tune2fs -l <device name>
để kiểm tra điều này.
Sau đó, có một stat
định dạng mới được gọi %W
, có thể giúp bạn ở đây. Để có được nó, bạn sẽ phải tải xuống một phiên bản GNU Coreutils được phát hành vào tháng 10 năm 2010 hoặc sau đó, giải nén nó, biên dịch nó và cài đặt nó.
Sau đó, tùy thuộc vào kernel của bạn, cái này có thể hoạt động (chưa thử nó).
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%W\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
Xem thêm:
Nếu bạn gặp lỗi về "'$\t'
Các '$\t'
ký hiệu đòi hỏi bash
hay zsh
: nó sẽ không làm việc trong dash
hoặc sh
trên Ubuntu. Nếu bạn thực sự cần sử dụng các shell đó, bạn sẽ cần thay đổi bất kỳ \t
thành Ctrl+ V, Tabvà loại bỏ hàng đầu $
ngay trước khi trích dẫn mở đầu.
find -mtime +<number of days> -delete
dọn sạch tất cả các tệp cũ hơn một độ tuổi nhất định. Điều đó có nghĩa là không có loại là cần thiết.