我有一个目录: /home/user/
如何列出此目录中的每个文件(包括子目录中的文件)并按上次修改日期对其进行排序?
您可以使用:
$ ls -Rt
其中-R
表示递归(包括子目录),-t
表示"按上次修改日期排序".
要查看按修改日期排序的文件列表,请使用:
$ ls -l -Rt
还可以创建别名来实现此目的:
alias ll='ls -l'; ll -Rt
如果您想要一个主列表,其中所有文件按修改日期排序在一起,显示它们所在的目录,但不按目录分组,您可以使用:
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的用户,选择-printf 在BSD find上不可用(您将收到此错误:)find: -printf: unknown primary or operator
.幸运的是,您可以通过Homebrew安装GNU find (Fink和Macports也应该有一个选项):
brew install findutils
安装后,GNU find应该可以使用gfind
.因此,您需要做的就是将上面的行更改为:
gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '