kos*_*kos 21
打印最近访问的 3 个文件(从最后访问的文件到倒数第三个访问的文件排序):
find . -type f -exec stat -c '%X %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'
Run Code Online (Sandbox Code Playgroud)
打印最近修改的 3 个文件(从最后修改的文件到倒数第三个修改的文件排序):
find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'
Run Code Online (Sandbox Code Playgroud)
find . -type f -exec stat -c '%X %n' *: 打印当前目录层次结构中每个文件的最后访问时间和文件路径;find . -type f -exec stat -c '%Y %n' *: 打印当前目录层次结构中每个文件的最后修改时间和文件路径;sort -nr: 以相反的数字顺序排序;awk 'NR==1,NR==3 {print $2}': 打印第一行、第二行和第三行的第二个字段。您可以通过将 3 更改为所需的文件数来更改要显示的文件数awk 'NR==1,NR==3 {print $2}'。
% touch file1
% touch file2
% touch file3
% find . -type f -exec stat -c '%X %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file3
./file2
./file1
% find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file3
./file2
./file1
% cat file1
% find . -type f -exec stat -c '%X %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file1
./file3
./file2
% find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file3
./file2
./file1
% touch file2
% find . -type f -exec stat -c '%X %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file2
./file1
./file3
% find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print }'
./file2
./file3
./file1
Run Code Online (Sandbox Code Playgroud)
您可以使用递归开关 ( -R)ls与按时间排序开关 ( -t) 和反向排序开关 ( -r) 一起列出目录树中的所有文件。这不会按跨子目录的访问/修改日期对所有文件进行排序,而是按此日期在每个子目录中独立地对它们进行排序。
使用这样的命令:ls -ltrR <sometopdir>。
$ ls -ltrR .
total 759720
-rw-r-----@ 1 sammingolelli staff 2514441 Mar 31 2015 restfulapi-120704053212-phpapp01.pdf
-rw-r-----@ 1 sammingolelli staff 567808 Apr 7 2015 USGCB-Windows-Settings.xls
-rw-r-----@ 1 sammingolelli staff 180736 Apr 7 2015 USGCB-RHEL5-Desktop-Settings-Version-1.2.5.0.xls
-rw-r-----@ 1 sammingolelli staff 6474 Apr 8 2015 tap_kp_mavericks.txt
./kerberos:
total 5464
-rw-r-----@ 1 sammingolelli staff 37317 Oct 2 13:03 Set_up_Kerberos_instruction_d8.docx
-rw-r-----@ 1 sammingolelli staff 2753195 Oct 13 13:49 Keberos configuration with AD 01_09_2014.pdf
./homestarrunner:
total 10624
-rw-rw-rw-@ 1 sammingolelli staff 319422 May 10 2000 error_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 53499 Jun 8 2001 sb_duck.mp3
-rw-rw-rw-@ 1 sammingolelli staff 199254 Mar 11 2002 email_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 39288 Mar 25 2002 bubs_dontutalk.mp3
-rw-rw-rw-@ 1 sammingolelli staff 75432 May 6 2002 trash_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 298946 Dec 1 2002 error_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 298686 Dec 1 2002 startup_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 90279 Dec 1 2002 sb_meedlymee.mp3
-rw-rw-rw-@ 1 sammingolelli staff 73561 Dec 1 2002 sb_dubdeuce.mp3
-rw-rw-rw-@ 1 sammingolelli staff 193097 Dec 1 2002 sb_pizza.mp3
-rw-rw-rw-@ 1 sammingolelli staff 30093 Dec 1 2002 sb_stiny.mp3
-rw-rw-rw-@ 1 sammingolelli staff 61858 Dec 1 2002 ss_sadflying.mp3
-rw-rw-rw-@ 1 sammingolelli staff 150142 Dec 1 2002 email_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 68545 Dec 1 2002 bubs_grabbinbutt.mp3
-rw-rw-rw-@ 1 sammingolelli staff 61022 Dec 1 2002 cz_jeorghb.mp3
-rw-rw-rw-@ 1 sammingolelli staff 40124 Dec 1 2002 marzy_nasty.mp3
-rw-rw-rw-@ 1 sammingolelli staff 224116 Dec 1 2002 shutdown_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 260546 Dec 1 2002 shutdown_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 57686 Dec 1 2002 trash_hs.wav
Run Code Online (Sandbox Code Playgroud)
如果您希望给定目录中的文件按修改时间排序(最近的在前):
ls -t
Run Code Online (Sandbox Code Playgroud)
要按访问时间排序,请添加该-u选项。
ls -tu
Run Code Online (Sandbox Code Playgroud)
但是,请注意现代 Linux 系统默认情况下不会跟踪准确的访问时间。所以访问时间戳可能不可靠。
如果您想在目录树中找到最新的文件,包括子目录,目前最简单的方法是使用 zsh 的glob qualifiers。
print -lr -- **/*(om)
Run Code Online (Sandbox Code Playgroud)
使用oa而不是om使用访问时间而不是修改时间。您可以限制匹配,例如获取 10 个最近的文件:
print -lr -- **/*(om[1,10])
Run Code Online (Sandbox Code Playgroud)
小智 6
此命令还提供当前目录树中最近修改的文件或目录:
% find . -printf '%TY-%Tm-%TdT%TT %p\n' |sort |tail -1
2019-01-30T17:29:18.0330479800 ./servlet-api/META-INF/NOTICE
Run Code Online (Sandbox Code Playgroud)
当然,您可以将最后一个参数更改为您可能需要的最新文件数。