Linux命令-----locate和find查找

Linux命令-----locate和find查找

locate

搜索包含关键字的所有文件和目录。后接需要查找的文件名,也可以用正则表达式。

sudo ape-get install mlocate #安装locate
updatedb # 更新数据库

find

用于查找文件,它会去遍历你的实际硬盘进行查找,允许我们对每个找到的文件进行后续操作

find <何处> <何物> <做什么>
  • 何处:指定在哪个目录查找,此目录的所有子目录也会被查找。
  • 何物:查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,还可以根据其最近访问时间来查找。
  • 做什么:找到文件后,可以进行后续处理,如果不指定这个参数, find 命令只会显示找到的文件。
根据文件名查找
find -name "file.txt" --> 当前目录以及子目录下通过名称查找文件
find . -name "ok" --> 当前目录以及子目录下通过名称查找文件
find / -name "ok" --> 整个硬盘下查找ok
find /var/log -name "ok" --> 在指定的目录/var/log下查找ok文件
find /var/log -name "ok*" --> 查找ok1、ok2 ... 等文件,通配符表示所有
find /var/log -name "*ok*" --> 查找包含syslog的文件 
  • find 命令只会查找完全符合 “何物” 字符串的文件,而 locate 会查找所有包含关键字的文件。
根据文件大小查找
find /var -size +10M --> /var 目录下查找文件大小超过 10M 的文件
find /var -size -50k --> /var 目录下查找文件大小小于 50k 的文件
find /var -size +1G --> /var 目录下查找文件大小查过 1G 的文件
find /var -size 1M --> /var 目录下查找文件大小等于 1M 的文件
根据文件最近访问时间查找
find -name "*.txt" -atime -7  -->7天内访问过的.txt结尾的文件
仅查找目录或文件
find . -name "file" -type f  --> 只查找当前目录下的file文件
find . -name "file" -type d  --> 只查找当前目录下的file目录
操作查找结果
find -name "*.txt" -printf "%p - %u\n" --> 找出所有后缀为txt的文件,并按照 %p - %u\n 格式打印,其中%p=文件名,%u=文件所有者
find -name "*.jpg" -delete --> 删除当前目录以及子目录下所有.jpg为后缀的文件,不会有删除提示,因此要慎用
find -name "*.c" -exec chmod 600 {} \; --> 对每个.c结尾的文件,都进行 -exec 参数指定的操作,{} 会被查找到的文件替代,\; 是必须的结尾
find -name "*.c" -ok chmod 600 {} \; --> 和上面的功能一直,会多一个确认提示

你可能感兴趣的:(linux,c语言,linux,chrome,运维)