Liệt kê các tệp theo ngày chỉnh sửa lần cuối


104

Tôi có một thư mục: /home/user/

Làm cách nào tôi có thể liệt kê mọi tệp trong thư mục này (bao gồm cả những tệp trong thư mục con) và sắp xếp chúng theo ngày sửa đổi lần cuối?

Câu trả lời:


172

Bạn có thể dùng:

ls -Rt

trong đó -Rcó nghĩa là đệ quy (bao gồm các thư mục con) và -tcó nghĩa là "sắp xếp theo ngày sửa đổi cuối cùng".


Để xem danh sách các tệp được sắp xếp theo ngày sửa đổi, hãy sử dụng:

ls -l -Rt

Một bí danh cũng có thể được tạo để đạt được điều này:

alias lt='ls -lht'
lt

Nơi -hcung cấp đầu ra dễ đọc hơn.


16
Cảm ơn, điều đó thật hoàn hảo. Tôi cũng đã thêm -l vào đó để tôi thực sự có thể xem ngày tháng nên đối với bất kỳ ai tìm kiếm thông tin này sau đó, đó là- $ ls -lRt
Marty

4
Nếu bạn đang thực hiện việc này khi được nhắc và muốn xem các tệp được sửa đổi gần đây nhất, hãy cân nhắc ls -lrt[RhA]. các -rđảo ngược thứ tự sắp xếp, để lại những thứ vừa thay đổi nội dung ở dưới cùng của danh sách ...
dmckee --- cựu điều hành kitten

Điều này được thêm vào a -ilacung cấp cho bạn khá nhiều thông tin bạn cần. $ ls -ilaRt
Falkenfighter

Tôi đã mở rộng câu trả lời này vì sử dụng ll -Rtlà giải pháp hoàn hảo cho tôi khi tôi cần xem tệp theo ngày được sửa đổi gần đây nhất. Điều này có thể hữu ích cho những người khác.
Mus

@MusTheDataGuy llkhông tồn tại và không phải là lệnh. Nó chủ yếu là một bí danh trong bash shell, nhưng không được định nghĩa trong hầu hết / một số /? các bản phân phối linux. Một số định nghĩa nó là alias ll='ls -l'trong /etc/bash.bashrc hoặc /etc/.bashrc. Vì vậy, nó có thể không hoạt động và nó có thể không tồn tại trên hệ thống OPs. Sử dụng ls -l -Rtít nhất, cũng như lsmột lệnh tiêu chuẩn được xác định bởi posix. Hoặc chỉ rõ ý bạn alias ll='ls -l'; ll -Rt.
KamilCuk

73

Nếu bạn muốn một danh sách tổng thể, trong đó tất cả các tệp được sắp xếp cùng nhau theo ngày sửa đổi, hiển thị thư mục chứa chúng, nhưng không được nhóm theo thư mục , bạn có thể sử dụng điều 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 giống như ls -lsau:

-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 13/08/2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r - r-- 1 root root 728 17/08/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r - r-- 1 root root 873 18/08/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r - r-- 1 root root 2552 19/08/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r - r-- 1 root root 9546 19/08/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r - r-- 1 root root 2201 19/08/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r - r-- 1 root root 926 19/08/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r - r-- 1 root root 18052 19/08/2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r - r-- 1 root root 1845 19/08/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

Mac OS X

Đối với những người bạn sử dụng Mac OS X, tùy chọn -printf không khả dụng trên BSD find (bạn sẽ gặp lỗi này find: -printf: unknown primary or operator:). May mắn thay, bạn có thể Install GNU tìm thấy thông qua Homebrew (cũng nên có tùy chọn để FinkMacports ):

brew install findutils

Sau khi cài đặt nó, GNU find sẽ có sẵn cho bạn 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 ' '

3
Tốt lắm. Toàn bộ thư mục nhóm điều với ls -R là khó chịu.
El Yobo

1
Mã tuyệt vời, nó mất khoảng kịch bản. 5 giây để sắp xếp và in ra 13k bức ảnh trong nhiều thư mục khác nhau (thông qua Cygwin trên máy tính khá chậm).
Magnus

Ồ, điều đó thật tuyệt vời. Đối với những người (như tôi) không quen thuộc findnhư tác giả, những đối số đó -printflà chỉ thị định dạng có thể được tìm thấy trong man find(tìm kiếm ví dụ thứ năm của printftrang đó).
Owen Blacker

4
Đối với bất cứ ai muốn sử dụng này trên hệ điều hành MacOS nhưng không muốn làm phiền cài đặt findutils: find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' 'sẽ cung cấp cho bạn khoảng đầu ra tương tự trên hệ điều hành MacOS chỉ sử dụng được xây dựng trong các tiện ích
Jaymon

sort -rđể đảo ngược việc sắp xếp và đặt các tệp được sửa đổi gần đây nhất ở trên cùng.
maryisdead

0

MAC OSX 2019

Nếu bạn không quan tâm đến thời gian nó được tạo nhưng bạn muốn danh sách của mình được sắp xếp thì hãy sử dụng lệnh này

==> ls -t

Nếu bạn muốn đặt hàng và xem ngày tháng và thông tin người dùng, hãy sử dụng lệnh này

===> ls -lt


0

Đối với zshngười dùng, bạn cũng có thể sử dụng các vòng loại toàn cầu (cũng được ghi lại trên man zshexpn):

echo *(om)

Where olà viết tắt của thứ tự sắp xếp, lênmlà viết tắt của thời gian sửa đổi cuối cùng .

Điều này có thể hữu ích khi được sử dụng trong vòng lặp for hoặc một lệnh khác:

for file in *(^om); do
  [ -e "$file" ] || continue
  # do something with file orderer from least recently modified to last modified
done

Hoặc được xâu chuỗi với một vòng loại toàn cầu khác:

last_modified_file=(*(om[1]))
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.