Linux find 查找 时间 问题

在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。


与文件相关的几个时间:
1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。
2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。

比如: [jing@zhjh c]$ stat temp.c


File: 'temp.c'

Size: 66 Blocks: 8 IO Block: 4096 u4e00u822cu6587u4ef6

Device: 807h/2055d Inode: 1191481 Links: 1

Access: (0664/-rw-rw-r--) Uid: ( 500/ jing) Gid: ( 500/ jing)

Access: 2008-03-12 20:19:45.000000000 0800

Modify: 2008-03-12 20:19:45.000000000 0800

Change: 2008-03-12 20:19:45.000000000 0800


说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。
一个同学问我在linux怎样按修改时间来查找文件,我Google之后才得到答案,写个笔记吧。
find /home/admin -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件
find /home/admin -name *.txt -mtime -1 #查找/home/admin目录下修改时间在1天之内的文件名为.txt结尾的文件
find 按文件修改时间查找文件
---(+n)----------|----------(n)--------- -|----------(-n)---
(n+1)*24H前| (n+1)*24H~n*24H间 |n*24H内
-ctime -n 查找距现在 n*24H 内修改过的文件
-ctime n 查找距现在 n*24H 前, (n+1)*24H 内修改过的文件
-ctime +n 查找距现在 (n+1)*24H 前修改过的文件
[a|c|m]min [最后访问|最后状态修改|最后内容修改]min
[a|c|m]time [最后访问|最后状态修改|最后内容修改]time
linux 文件的三种时间(以 find 为例):
atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;
ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;
mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.
注意: linux 里是不会记录文件的创建时间的, 除非这个文件自创建以来没有发生改变, 那么它的创建时间就是它的最后一次修改时间.
#ls -lt /home/admin # 按修改时间顺序查看
#ls -lut /home/admin # 按访问时间顺序查看
(如果想反序查看的话需要加一个选项 -r)

参考资料:
http://shawonline.blog.51cto.com/304978/199674
l

s –tl file 按时间顺序显示
我用下面这个删除一天之前改变的文件,就是删 不掉,后来把+号去掉就可以 用了,如下:

find . -name "*.html" -mtime +1 -print0 |xargs -0 rm –v 改成
find . -name "*.html" -mtime 1 -print0 |xargs -0 rm -v

原文:http://blog.chinaunix.net/uid-23480577-id-3325150.html