一、定义
Chang time:简称ctime,一个文件或目录的更改时间。在Linux中,基本上无法知道一个文件的精确创建时间,更改时间是指文件或目录的属性(所有者,权限等等)被修改的时间。如果一个文件需要备份的话,dump命令需要用到ctime,你可以用ls-lc命令查看ctime。
Access time:简称atime,一个文件或目录的访问时间。就是一个文件的数据最后一次被访问的时间,例如:显示一个文件的内容或运行一个shell脚本会更新文件的atime,你可以用ls-lu命令查看。
Modify time:简称mtime,一个文件或目录的修改时间。就是文件的目前内容最后被修改的时间,这是一个在长目录列表中显示的时间
二、如何修改
在Linux中,状态命令会显示三次,
例如:$ cat file 文件的atime将更新
$ chmod g+w file 文件的ctime将更新
$ echo “File contentss” > file 文件的ctime和mtime将更新。
Linux文件与目录的三种时间状态:
1 mtime:最后一次修改文件或目录的时间
2 ctime:最后一次改变文件或目录(改变的是原数据即属性)的时间,如记录该文件的inode节点被修改的时间。而且chmod,chown等命令也能改变该值。
3 atime:最后一次访问文件或目录的时间。
对于文件,当修改mtime时ctime必须随着改变,因为文件大小等都是属性,有人说atime也一定会改变,要想修改文件必须先访问,其实是不对的,不访问文件也能修改,如#echo“Thos is a test”>>/etc/issue,issue文件内容会改变,但并没有访问文件,所以atime并没有改变。
对于目录,访问一个目录其atime改变,mtime,ctime不变。修改一个目录,在一个目录下touch一个文件,mtime和ctime会改变,atime不一定会变。
使用stat命令可以查看三个时间值,例如stat filename,也可以使用ls -l file查看文件修改时间,ls -lc file查看文件状态改动时间,ls -lu file查看文件访问时间。
一、Linux 中Find命令
Linux下find命令在⺫⽬目录结构中搜索⽂文件,并执⾏行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强⼤大。由于
find具有强⼤大的功能,所以它的选项也很多,其中⼤大部分选项都值
得我们花时间来了解⼀一下。即使系统中含有⺴⽹网络⽂文件系统( NFS),
find命令在该⽂文件系统中同样有效,只你具有相应的权限。 在运
⾏行⼀一个⾮非常消耗资源的find命令时,很多⼈人都倾向于把它放在后台
执⾏行,因为遍历⼀一个⼤大的⽂文件系统可能会花费很⻓长的时间(这⾥里是指
30G字节以上的⽂文件系统)。
1.命令格式:
find pathname -options [-print -exec -ok ...]
2.命令功能:
⽤用于在⽂文件树种查找⽂文件,并作出相应的处理(可能访问磁盘)
3.命令参数:
pathname: find命令所查找的⺫⽬目录路径。例如⽤用.来表⽰示当前⺫⽬目
录,⽤用/来表⽰示系统根⺫⽬目录。
-print: find命令将匹配的⽂文件输出到标准输出。
-exec: find命令对匹配的⽂文件执⾏行该参数所给出的shell命
令。相应命令的形式为'command' { } \;,注意{ }和\;
之间的空格。
-ok: 和-exec的作⽤用相同,只不过以⼀一种更为安全的模式来执⾏行
该参数所给出的shell命令,在执⾏行每⼀一个命令之前,都会给出提
⽰示,让⽤用户来确定是否执⾏行。
4.命令选项:
-name 按照⽂文件名查找⽂文件。
-perm 按照⽂文件权限来查找⽂文件。
-prune 使⽤用这⼀一选项可以使find命令不在当前指定的⺫⽬目录中查
找,如果同时使⽤用-depth选项,那么-prune将被find命令忽
略。-user 按照⽂文件属主来查找⽂文件。
-group 按照⽂文件所属的组来查找⽂文件。
-mtime -n +n 按照⽂文件的更改时间来查找⽂文件, - n表⽰示⽂文
件更改时间距现在n天以内,+ n表⽰示⽂文件更改时间距现在n天以
前。find命令还有-atime和-ctime 选项,但它们都和-m time
选项相同。
-nogroup 查找⽆无有效所属组的⽂文件,即该⽂文件所属的组在/
BIT科技 仅限学习交流
etc/groups中不存在。
-nouser 查找⽆无有效属主的⽂文件,即该⽂文件的属主在/etc/
passwd中不存在。
-newer file1 ! file2 查找更改时间⽐比⽂文件file1新但⽐比⽂文
件file2旧的⽂文件。
-type 查找某⼀一类型的⽂文件,诸如:
b - 块设备⽂文件。
d - ⺫⽬目录。
c - 字符设备⽂文件。
p - 管道⽂文件。
l - 符号链接⽂文件。
f - 普通⽂文件。
-size n:[c] 查找⽂文件⻓长度为n块的⽂文件,带有c时表⽰示⽂文件⻓长
度以字节计。
-depth:在查找⽂文件时,⾸首先查找当前⺫⽬目录中的⽂文件,然后再在其
⼦子⺫⽬目录中查找。
-fstype:查找位于某⼀一类型⽂文件系统中的⽂文件,这些⽂文件系统类
型通常可以在配置⽂文件/etc/fstab中找到,该配置⽂文件中包含了
本系统中有关⽂文件系统的信息。
-mount:在查找⽂文件时不跨越⽂文件系统mount点。
-follow:如果find命令遇到符号链接⽂文件,就跟踪⾄至链接所指向
的⽂文件。
-cpio:对匹配的⽂文件使⽤用cpio命令,将这些⽂文件备份到磁带设备
中。
另外,下⾯面三个的区别:
- 建时间来查找⽂文件,-n指n天以内,+n指n天以前
例⼦子:
1. 在/ l o g s⺫⽬目录中查找更改时间在5⽇日以前的⽂文件并删除它
们:
$ find logs -type f -mtime +5 -exec -ok rm {} \
2. Linux ⽤用find命令查找⽂文件⼤大⼩小为XX的⽂文件的办法
例如:⼀一个⽂文件5556字节,可以这样写
find /root -size -5557c -size +5555c -exec ls -ld {} \;
即查找⼤大于5555字节⼩小于5557字节的⽂文件,以上查找的是/root
目录
find /root -size -500K -size +50K -exec ls -ld {} \;
查找 ⼩小于500K,⼤大于50K的⽂文件
下面我们通过几组例子验证一下find指令:
find / -name code -print
找名字为code的并打印
find /home/shanying007/code -name test
找名字为test的文件
find /home/shanying007/code -group shanying007
找所属组为shanying007的文件