我有一个脚本:
newerthan="2016-02-08"
olderthan="2016-04-29"
find / -type f -name "*" -newermt "$newerthan" ! -newermt "$olderthan" -ls
此列表文件:
16481 0 -r--r--r-- 1 root root 4096 Mar 16 11:41 /sys/module/sunrpc/srcversion
16482 0 -r--r--r-- 1 root root 4096 Mar 13 04:42 /sys/module/sunrpc/initstate
16483 0 -r--r--r-- 1 root root 4096 Mar 16 11:41 /sys/module/sunrpc/refcnt
16485 0 -r--r--r-- 1 root root 4096 Mar 17 11:41 /sys/module/sunrpc/sections/.note.gnu.build-id
16486 0 -r--r--r-- 1 root root 4096 Mar 12 11:41 /sys/module/sunrpc/sections/.text
可以按日期、结果排序吗?
如果您想按排序顺序打印文件名和日期:
find / -type f -name "*" -newermt "$newerthan" ! -newermt "$olderthan" -printf "%T+\t%p\n" | sort
如果您只想按排序顺序打印文件名:
find / -type f -name "*" -newermt "$newerthan" ! -newermt "$olderthan" -printf "%T+\t%p\n" | sort | awk '{print $2}'
这将返回一个日期排序、时间戳受限、显示文件名的列表
find / -type f -name "*" -newermt "$newerthan" ! -newermt "$olderthan" -printf '%T@ %p\n' | sort -k 1 -n | sed 's/^[^ ]* //'
如果您需要其他列,您可以更改 printf 和 sort 参数以显示更多列并按位置而不是按列排序
对于 FreeBSD/Macos:
find /path/to/ -type f ... -exec stat -f '%B %N' {} \; | sort -nr | awk '{print $2}'