find命令

find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。
 

find命令的格式

1、 find命令的一般形式为:find pathname -options [-print -exec -ok ...]

2、 find命令的参数;
-athname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录,递归查找。
-print:     find命令将匹配的文件输出到标准输出。
-exec:    find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}内部无空格,和\;之间含有一个空格分隔符。
-ok:       和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 

根据文件名搜索

-name:使用文件名匹配符合条件的文件。   -iname:使用文件名匹配符合条件的文件(忽略大小写)。

[root@vmax0105 test_shell]# find /tmp/ -name "*.txt"
/tmp/test_shell/a.txt

 

find也可以用!排除匹配到的模式

[root@vmax0105 test_shell]# find /tmp/test_shell/ ! -name "*.txt"
/tmp/test_shell/
/tmp/test_shell/config.xml
/tmp/test_shell/test.sh

 

find命令支持逻辑操作符。-a和-and选项可以执行逻辑与(AND)操作,-o和-or选项可以执行逻辑或(OR)操作。 

[root@vmax0105 test_shell]# find /tmp/ \( -name "*.txt" -o -name "*.xml" \) -print
/tmp/test_shell/config.xml
/tmp/test_shell/file.txt

备注:  \(  \) 这对符号里的内容被视为一个整体。
 
 
-regex:使用正则表达式匹配符合条件的文件。   -iregex:使用正则表达式匹配符合条件的文件(忽略大小写)。
 
 

根据文件类型搜索

find支持的文件类型

 

 

只列出所有的目录(包括子目录)
[root@vmax0105 test_shell]# find . -type d -print
.
./dir2
./dir1

只列出所有文件(包括子目录中的文件)

[root@vmax0105 test_shell]# find . -type f -print
./config.xml
./file.txt
./dir2/dir2.txt
./dir1/dir1.txt
./test.sh

 

 

根据文件的时间戳进行搜索

 Unix/Linux文件系统中的每一个文件都有3种时间戳
  • 访问时间(-atime):用户最近一次访问文件的时间。 
  • 修改时间(-mtime):文件内容最后一次被修改的时间。 
  • 变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间。
-atime、-mtime和-ctime可作为find的时间选项。它们可以用整数值来指定天数。这些数字前面可以加上-或+。-表示小于,+表示大于。 
 

打印出在最近7天内被访问过的所有文件:find . -type f -atime -7 -print
打印出恰好在7天前被访问过的所有文件:find . -type f -atime 7 -print
打印出访问时间超过7天的所有文件:find . -type f -atime +7 -print

 

-atime、-mtime以及-ctime都是以“天”为单位来计时的。find命令还支持以“分钟”为计时单位的选项。这些选项包括:

  • -amin(访问时间)
  • -mmin(修改时间)
  • -cmin(变化时间)

找出比file.txt修改时间更近的所有文件:find . -type f -newer file.txt -print


find命令的时间戳处理选项有助于编写系统备份和维护脚本。



根据文件大小进行搜索

 文件大小单位
  • b:块(512字节)
  • c:字节
  • w:字(2字节)
  • k:千字节(1024字节)
  • M:兆字节(1024K字节)
  • G:吉字节(1024M字节)

查找大于2KB的文件:find . -type f -size +2k
查找小于2KB的文件:find . -type f -size -2k
查找大小等于2KB的文件:find . -type f -size 2k

 

 

根据文件权限和所有权进行搜索

-perm选项:搜索特定权限值的文件。
列出具有特定权限的文件:find . -type f -perm 644 -print

-user 按照文件属主来查找文件。-group 按照文件所属的组来查找文件。
find . -type f -user root -print

 

 

利用find执行相应操作 

1、删除匹配的文件
从当前目录中删除.txt文件:find . -name "*.txt" -delete
 
2、使用exec或ok来执行shell命令
查找文件并显示文件属性:find . -type f -exec ls -l {} \;
查找文件并显示文件行数:find . -type f -exec wc -l {} \;
查找文件并匹配文件内容:find . -type f -exec grep "sh" {} \;
 
 

转载于:https://www.cnblogs.com/lfjn/p/11387639.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值