Giả sử tôi có một thư mục như /home/user/
.Liệt kê các tập tin theo ngày chỉnh sửa cuối cùng
Làm cách nào để liệt kê mọi tệp (ngay cả trong thư mục con) trong thư mục đó và sắp xếp chúng theo ngày chúng được chỉnh sửa lần cuối?
Giả sử tôi có một thư mục như /home/user/
.Liệt kê các tập tin theo ngày chỉnh sửa cuối cùng
Làm cách nào để liệt kê mọi tệp (ngay cả trong thư mục con) trong thư mục đó và sắp xếp chúng theo ngày chúng được chỉnh sửa lần cuối?
Bạn có thể sử dụng:
$ ls -Rt
nơi -R
nghĩa đệ quy (bao gồm thư mục con) và -t
có nghĩa là "sắp xếp theo ngày sửa đổi cuối cùng".
Nếu bạn muốn một danh sách tổng thể trong đó tất cả các tập tin được sắp xếp cùng theo ngày sửa đổi, hiển thị thư mục họ đang ở, nhưng không nhóm lại theo thư mục, bạn có thể sử dụng này:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
kết quả trông rất giống ls -l
:
-rw-r--r-- 1 root root 3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz -rw-r--r-- 1 root root 22946 08/13/2009 11:59:20 /usr/share/man/man1/curl.1.gz -rw-r--r-- 1 root root 728 08/17/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz -rw-r--r-- 1 root root 873 08/18/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz -rw-r--r-- 1 root root 2552 08/19/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz -rw-r--r-- 1 root root 9546 08/19/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz -rw-r--r-- 1 root root 2201 08/19/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz -rw-r--r-- 1 root root 926 08/19/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz -rw-r--r-- 1 root root 18052 08/19/2009 04:11:47 /usr/share/man/man1/mono.1.gz -rw-r--r-- 1 root root 1845 08/19/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz
Đối với những người sử dụng Mac OS X, tùy chọn -printf không khả dụng trên BSD tìm (bạn sẽ gặp lỗi này: find: -printf: unknown primary or operator
). May mắn thay, bạn có thể cài đặt GNU tìm thấy thông qua Homebrew (không nên có một tùy chọn để Fink và Macports cũng):
brew install findutils
Sau khi cài đặt nó GNU tìm nên có sẵn cho bạn như gfind
. Vì vậy, tất cả những gì bạn cần làm là thay đổi dòng ở trên thành:
gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Đẹp nhất. Toàn bộ nhóm thư mục với ls -R gây phiền toái. –
Đoạn mã tuyệt vời, cảm ơn! –
Mã tuyệt vời, nó lấy kịch bản xấp xỉ. 5 giây để sắp xếp và in ảnh 13k trong nhiều thư mục khác nhau (thông qua Cygwin trên máy tính khá chậm). – Magnus
Cảm ơn, điều đó hoàn hảo. Tôi đã thêm một từ khóa trong đó để tôi có thể thấy ngày tháng cho bất kỳ ai tìm kiếm sau này, đó là $ ls -lRt – Marty
Nếu bạn đang thực hiện điều này tại dấu nhắc và muốn xem nhiều nhất các tệp được sửa đổi gần đây, hãy xem xét 'ls -lrt [RhA]'. '-r' đảo ngược thứ tự sắp xếp, để lại những nội dung được chỉnh sửa gần đây ở cuối danh sách ... – dmckee
Điều này được thêm vào một' -ila' cung cấp cho bạn khá nhiều thông tin bạn cần. '$ ls -ilaRt' – Falkenfighter