一、查找文件
locate
locate命令会查找其路径名数据库,输出所有包含查找字符串的匹配项:
locate settings.xml
updatedb
updatedb用来更新路径名数据库 (默认在linux系统每天以定时任务运行),可手动执行;locate命令的数据库是通过另一个命令updatedb创建的。它通常作为cron作业,由守护进程cron定期执行。大多数包含locate命令的系统每天执行一次updatedb命令。
updatedb
find
根据各种属性在指定目录(及其子目录)中查找文件;并支持各种选项(option)、测试条件(test)以及操作(action)来实现多种查找功能;
#在当前目录下 查找txt后缀的文件
find ./ -name '*.txt'
测试条件
#type测试条件:当前目录下查找所有文件夹
find ./ -type d
操作符
find命令提供了一种方式,可以使用逻辑操作符(简称操作符)组合多个测试条件,从而表达更为复杂的逻辑关系。
注意:
- 括号与条件之间前后要有空格,否则会报错。
- 括号在shell中需转义
#组合测试条件,type和name:查找type为f 且后缀为pub的文件
find ./ \( -type f \) -and \( -name '*.pub' \)
操作
预定义操作
find ~ -print
自定义操作
除了预定义操作,我们还可以针对查找结果调用任意命令。传统的实现方式是使用-exec操作。其用法如下:
-exec command {} ;
在这里,command是命令名。{}是代表当前路径名的符号。;作为分隔符,表示命令结束。因为{}和;对Shell具有特殊含义,所以必须对其进行标注或转义。
# 多当前文件夹下 后缀为txt的文件,进行创建.bak文件
find ./ -type f -name '*.txt' -exec touch '{}.bak' ';'
find命令选项(常用)
版权声明:本文为jts2015原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。