按上次编辑日期列出文件

Mar*_*rty 102 bash shell

我有一个目录: /home/user/

如何列出此目录中的每个文件(包括子目录中的文件)并按上次修改日期对其进行排序?

mip*_*adi 165

您可以使用:

$ ls -Rt
Run Code Online (Sandbox Code Playgroud)

其中-R表示递归(包括子目录),-t表示"按上次修改日期排序".


要查看按修改日期排序的文件列表,请使用:

$ ls -l -Rt
Run Code Online (Sandbox Code Playgroud)

还可以创建别名来实现此目的:

alias ll='ls -l'; ll -Rt
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这是完美的.我在那里添加了-l所以我实际上可以看到日期,所以对于后来搜索出来的人来说,这是 - $ ls -lRt (16认同)
  • 如果您在提示符下执行此操作并希望查看最近修改过的文件,请考虑`ls -lrt [RhA]`.`-r`反转排序顺序,将最近编辑的内容留在列表底部... (4认同)

Pau*_*ce. 72

如果您想要一个主列表,其中所有文件修改日期排序在一起,显示它们所在的目录,但不按目录分组,您可以使用:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Run Code Online (Sandbox Code Playgroud)

结果看起来很像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

Mac OS X.

对于那些使用Mac OS X的用户,选择-printf 在BSD find上不可用(您将收到此错误:)find: -printf: unknown primary or operator.幸运的是,您可以通过Homebrew安装GNU find (FinkMacports也应该有一个选项):

brew install findutils
Run Code Online (Sandbox Code Playgroud)

安装后,GNU find应该可以使用gfind.因此,您需要做的就是将上面的行更改为:

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Run Code Online (Sandbox Code Playgroud)

  • 对于任何想在MacOS上使用它但不想打扰安装findutils的人来说:`find.-type f -print0 | xargs -0 stat -f"%m%Sp%l%-8Su%-8Sg%8z%Sm%N"| 排序| cut -f 2- -d''`将仅使用内置实用程序在MacOS上为您提供大致相同的输出 (4认同)
  • 好一个.使用ls -R的整个目录分组事情很烦人. (3认同)