按上次编辑日期列出文件

时间:2009-09-10 12:17:53

标签: bash shell

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

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

4 个答案:

答案 0 :(得分:162)

您可以使用:

$ ls -Rt

其中-R表示递归(包含子目录),-t表示“按上次修改日期排序”。


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

$ ls -l -Rt

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

alias ll='ls -l'; ll -Rt

答案 1 :(得分:71)

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

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

结果看起来很像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的用户,在BSD查找中找不到选项 -printf (您将收到此错误:find: -printf: unknown primary or operator)。幸运的是,您可以通过 Homebrew 安装GNU find(还应该选择 Fink Macports ):

brew install findutils

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

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

答案 2 :(得分:0)

MAC OSX 2019

如果您不关心创建时间,但是希望对列表进行排序,请使用此命令

==> ls -t

如果要订购并查看日期和用户信息,请使用此命令

===> ls -lt

答案 3 :(得分:0)

对于zsh用户,您还可以使用glob qualifiers(也记录在man zshexpn上):

echo *(om)

o代表排序顺序,向上,而m代表最后修改时间

在for循环或其他命令中使用时,这很有用:

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

或与另一个glob限定符链接:

last_modified_file=(*(om[1]))