Linux的find命令详解和三个时间
Posted leno米雷のcoding记录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的find命令详解和三个时间相关的知识,希望对你有一定的参考价值。
这次解释一下三个Linux文件显示的三个时间,然后展示一下find命令的各个功能
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
- modification time(mtime):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别
- status time(ctime)
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,给我的感觉更像是change time,但这么说也不完全对,因为只有当更新文件的属性或者权限的时候才会更新这个时间,更改内容的话是不会更新这个时间的
- accesstime(atime)
当使用这个文件的时候就会更新这个时间
那么为什么我使用vim打开一个文件的时候,atime没有改变呢?因为在我当前的版本中,有了relatime的概念,如果我们频繁的对文件进行读取访问,就会频繁的修改atime,然后频繁的访问磁盘I/O,性能下降的很厉害,说实话,慢!用了relatime参数之后,除非atime早于mtime或者ctime,否则atime不会被更新
悲剧,中文的linux三个时间都翻译过来了。。。
find指令详解,它有很多功能,很强大,实时性很强,每找一个文件都会十分老实地去磁盘中寻找,所以它又很慢。。。
find path -option [ -print ] [ -exec -ok command ] {} \\;
PS:[]中的是可以没有的,就是附加选项
-path:就是文件的路径啦
-option:就是下面要说明的各个参数,参数后面有的会有操作数,需要注意
-print:find命令将匹配的文件输出到标准输出。
-exec : -ok是-exec的一个选项,加上之后执行command时会询问用户
{} \\:注意是反斜杠,大括号和反斜杠之间有一个空格
-;:注意!!!!分号必不可少!!!
- 先来一个例子
这里显示出了我写的一个命令,快看!分号不能少(因为我老是忘记,所以多写几遍),因为ls -l本身就不会询问用户(rm命令会询问,试试rm吧),所以自然用不了-ok,当我把-ok去掉之后,就可以正常执行ls -l了,
find命令参数详解
find命令有很多参数,下面就用截图来一一说明
- -name filename #查找名为filename的文件,和下面的放在一张图里面了
- -perm #按执行权限来查找,使用权限查找的时候使用权限码就可以了
- -user username #按文件属主来查找
- -group groupname #按组来查找
- -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
- -atime -n +n #按文件访问时间来查GIN: 0px">
- -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
看到这里的-n之后就理所当然的想到+n是n天之后?我仔细想了想,我怎么可能在未来创建文件。。。
找到的几乎都是同样的文件,原因是我很少去linux里面创建新的文件,而是把windows的文件直接通过磁盘共享拿过去。。。
- -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
咱好像没有这样的文件啊
- -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
这样的似乎也没有
- -newer f1 !f2 #查更改时间比f1新但比f2旧的文件,使用的时候要注意f1和f2前面都应该有-newer参数才行
- -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
我先建立了一个管道文件,然后搜索类型为管道文件的文件(。。。)
- -size n[c] #查长度为n块[或n字节]的文件
这个我就不截图了。。
- -depth #使查找在进入子目录前先行查找完本目录
给我的感觉而言,这个更像是遍历该文件夹下所有文件的样子,遇到子目录的时候先不进入子目录遍历,而是遍历完当前文件夹下的所有文件之后再去遍历子目录(就是子文件夹)下的文件,这样不断地递归。。。这不就是个层序遍历么?
- -fstype:查找位于某一类型文件系统中的文件,文件系统类型可在/etc/fstab中找到
这个参数是什么意思没有太理解,测试了一下什么也没有找到,我都不知道应该怎么测试他
- -mount #查文件时不跨越文件系统mount点
这个参数似乎是不允许进入子目录进行查找的,我试了一下,子目录下的文件说是查找不到
- -follow #如果遇到符号链接文件,就跟踪链接所指的文件
当有硬链接的时候就不跟踪了,下面有个实例,file_hard是硬链接,file_ln是符号链接,当我把软连接删除,就不会跟踪到./test/file这个链接文件了,证明硬链接是不能跟踪的
- -cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
在普通的查找结果之后,把该文件备份写到磁盘上。。。
- -prune #忽略某个目录
这个就不用说了吧。。。。
最后强烈希望各位批评指正!!我还有很多不懂得地方,指出来我会超感谢的!
以上是关于Linux的find命令详解和三个时间的主要内容,如果未能解决你的问题,请参考以下文章
linux find命令查找当前目录下7天前的文件但排除所有目录