linux中find命令详解,Linux下的find指令详解
在Linux下有很多查指令:locate
whereis
which
find
在这些查指令中功能最强⼤的当属find指令了。find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。Linux下find命令提供了相当多的查条件,功能很强⼤。即使系统中含有⽹络⽂件系统,find命令在该⽂件系统中同样有效。所以在本⽚博客中主要讨论find命令。
(⼀)find命令的格式:find 路径 -命令参数 [输出形式];
路径:所要搜索的⽬录及其所有⼦⽬录。默认为当前⽬录。
命令参数:要查⽂件的特征。如果参数为空则返回当前⽬录及⼦⽬录下的所有⽂件
(⼆)find命令的常⽤参数:根据⽂件名或正则表达式匹配搜索:
使⽤-name参数指定⽂件名必须匹配的字符串:(-name之前的.可加可不加)
具有条件限制的查:
-a 与条件
-o 或条件
-not ⾮条件(此参数的功能类似于否定参数‘!’)
find -name "t*" -a -name "*.text" //查以t开头并且以.text结尾的⽂件find -name "t*" -o -name "*.text" //查以t开头或以.text结尾的⽂件
find -not -name "t*" -o -name "*.text" //查不以t开头或以.text结尾的⽂件
-path 这个参数⽤于将整个路径作为⼀个整体进⾏匹配。find /home -path "*.c"
设定find命令在⼦⽬录中遍历的深度参数:
-maxdepth
-mindepth
find -maxdepth 2 -type f //列出两层深度之间的普通⽂件根据⽂件类型搜索:⽂件类型 类型参数
普通⽂件 f
符号⽂件 l
⽬录 d
字符设备 c
find查命令的使用块设备 b
套接字 s
管道⽂件 p
find -type l //查此⽬录及⼦⽬录以下的所有符号⽂件
find -type f //普通⽂件
字符设备⽂件,块设备⽂件,套接字⽂件,管道⽂件可以到根⽬录下查:(cd /)
根据⽂件时间进⾏查:
linux⽂件系统中的每个⽂件都有三种时间戳:
1. 访问时间(atime——access time):就是上次访问这个⽂件的时间。
2. 改变时间(ctime——change time):就是⽂件的inode改变的时间(什么是inode?)当你往⼀个⽂件中添加数据或者删除数据的时候,修改⽂件所有者的时候,链接改变的时候,⽂件的ctime就会发⽣改变。
3. 修改时间(mtime——modification time):就是⽂件的内容上⼀次发⽣改变的时候的时间。
find -type f -atime -7 #查7天内被访问的⽂件
find -type f -atime 7 #查恰好在7天前被访问的⽂件
find -type f -atime +7 #查超过7天没被访问的⽂件
-atime,-ctime,-mtime可作为find的时间参数,单位是天。还有基于“分钟”的,-amin,-mmin
-cmin。这些值通常还带有+或-:+表⽰⼤于,-表⽰⼩于。
-newer参数,我们可以指定⼀个⽤于⽐较时间戳的参考⽂件,然后出⽐参考⽂件更新的所有⽂件。
find -type f -newer test4 //查当前⽬录及⼦⽬录下⽐test4更新的⽂件基于⽂件⼤
⼩的查
-size参数
find -type f -size +45 //查⽂件⼤⼩⽐45⼤的普通⽂件
find -type f -size 45 //查⽂件⼤⼩为45的普通⽂件
find -type f -size -45 //查⽂件⼤⼩⽐45⼩的普通⽂件基于⽂件权限和⽂件所有⼈的查
-perm 按照⽂件权限查
-user (或者是-uid n n是⽤户账号的ID) 按照⽂件所有⼈查
-group (或者是-gid n n是组名的ID)按照⽂件的所属组查
find -type f -perm 664 //查权限为664的普通⽂件
find -type f -perm +664 //查权限为⼤于664的普通⽂件
find -type f -user lee //查所有⼈为lee的普通⽂件
find -type f -uid 2 //查所有⼈为账号ID为2的普通⽂件结合find执⾏命令或动作
-exec find命令最强⼤的参数之⼀find -type f -name "*.c" -exec cat> \; #将所有.c⽂件拼接起来写⼊单个⽂件中
find -type f -mtime +10 -name "*.text" -exec cp /5_15 #将10天前的.text⽂件复制到/tmp下find与xargs结合使⽤
xargs参数 将标准输⼊转换成命令⾏参数
find -type f -name "*.txt" -print0 |xargs -0 rm -f #将匹配到
的⽂件删除,xargs -0将 \0作为输⼊定界符。
find -type f -name "*.c" -print0 | xargs -0 -l #统计所有c程序⽂件的⾏数额外可进⾏的动作参数
-exec参数 参数后⾯跟的命令就是所要进⾏的额外动作
例如:find -type f /home -perm -1000 -exec ls -l{}\; //出⽂件权限⼩于1000的普通⽂件使⽤ls -l显⽰出来
-exec与“\;”之间的内容就是要进⾏的额外内容。
{}就是将find到的内容放到{}中去。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论