linux 查找
locate abc/def 根据路径名匹配
locate abc | grep def
updatedb程序每天运行一次,更新locate的数据库,所以locate的数据不是实时的
whereis 搜索可执行文件、源代码文件、帮助文件 只在部分目录里查找
find 直接在硬盘中搜索 速度比较慢
find ~ 搜索HOME目录
find ~ | wc -l 使用wc统计文件的数量
find ~ -type d | wc -l 搜索目录 列出数量
-type 后面的文件类型参数:
| 文件类型 | 描述 | 
| b | 块设备文件 | 
| c | 字符设备文件 | 
| d | 目录 | 
| f | 普通文件 | 
| l | 符号链接 | 
find ~ -type f -name "*.JPG" -size +1M | wc -l 文件名匹配*.JPG 大于1M的文件
表示文件大小的字符:
| 字符 | 单位 | 
| b | 512 个字节块。如果没有指定单位,则这是默认值。 | 
| c | 字节 | 
| w | 两个字节的字 | 
| k | 千字节(1024个字节单位) | 
| M | 兆字节(1048576个字节单位) | 
| G | 千兆字节(1073741824个字节单位) | 
find 命令支持大量不同的测试条件。在需要数值参数的 情况下,可以应用以上讨论的“+”和”-“符号表示法:
| 测试条件 | 描述 | 
| -cmin n | 匹配的文件和目录的内容或属性最后修改时间正好在 n 分钟之前。 指定少于 n 分钟之前,使用 -n,指定多于 n 分钟之前,使用 +n。 | 
| -cnewer file | 匹配的文件和目录的内容或属性最后修改时间早于那些文件。 | 
| -ctime n | 匹配的文件和目录的内容和属性最后修改时间在 n*24小时之前。 | 
| -empty | 匹配空文件和目录。 | 
| -group name | 匹配的文件和目录属于一个组。组可以用组名或组 ID 来表示。 | 
| -iname pattern | 就像-name 测试条件,但是不区分大小写。 | 
| -inum n | 匹配的文件的 inode 号是 n。这对于找到某个特殊 inode 的所有硬链接很有帮助。 | 
| -mmin n | 匹配的文件或目录的内容被修改于 n 分钟之前。 | 
| -mtime n | 匹配的文件或目录的内容被修改于 n*24小时之前。 | 
| -name pattern | 用指定的通配符模式匹配的文件和目录。 | 
| -newer file | 匹配的文件和目录的内容早于指定的文件。当编写 shell 脚本,做文件备份时,非常有帮助。 每次你制作一个备份,更新文件(比如说日志),然后使用 find 命令来决定自从上次更新,哪一个文件已经更改了。 | 
| -nouser | 匹配的文件和目录不属于一个有效用户。这可以用来查找 属于删除帐户的文件或监测攻击行为。 | 
| -nogroup | 匹配的文件和目录不属于一个有效的组。 | 
| -perm mode | 匹配的文件和目录的权限已经设置为指定的 mode。mode 可以用 八进制或符号表示法。 | 
| -samefile name | 相似于-inum 测试条件。匹配和文件 name 享有同样 inode 号的文件。 | 
| -size n | 匹配的文件大小为 n。 | 
| -type c | 匹配的文件类型是 c。 | 
| -user name | 匹配的文件或目录属于某个用户。这个用户可以通过用户名或用户 ID 来表示。 | 
find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
逻辑操作符: (遵循短路原则)
| 操作符 | 描述 | 
| -and | 如果操作符两边的测试条件都是真,则匹配。可以简写为 -a。 注意若没有使用操作符,则默认使用 -and。 | 
| -or | 若操作符两边的任一个测试条件为真,则匹配。可以简写为 -o。 | 
| -not | 若操作符后面的测试条件是真,则匹配。可以简写为一个感叹号(!)。 | 
| () | 把测试条件和操作符组合起来形成更大的表达式。这用来控制逻辑计算的优先级。 默认情况下,find 命令按照从左到右的顺序计算。经常有必要重写默认的求值顺序,以得到期望的结果。 即使没有必要,有时候包括组合起来的字符,对提高命令的可读性是很有帮助的。注意 因为圆括号字符对于 shell 来说有特殊含义,所以在命令行中使用它们的时候,它们必须 用引号引起来,才能作为实参传递给 find 命令。通常反斜杠字符被用来转义圆括号字符。 | 
找到文件或目录之后的预定义行为:
| 操作 | 描述 | 
| -delete | 删除当前匹配的文件。 | 
| -ls | 对匹配的文件执行等同的 ls -dils 命令。并将结果发送到标准输出。 | 
|  | 把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是 默认操作。 | 
| -quit | 一旦找到一个匹配,退出。 | 
find ~ -print
find ~ -type f -name '*.BAK' -delete 删除备份文件
自定义行为:
-exec command {} ; command 就是指一个命令的名字,{}是当前路径名的符号
表示,分号是要求的界定符 表明命令结束。
-exec rm '{}' ';' 相当于预定义的-delete行为 {}和; 要用引号括起来或被转义
find ~ -type f -name 'foo*' -ok ls -l '{}' ';' 在对每个匹配的文件执行ls之前,会询
问用户
把末尾的分号改为加号,就激活了 find 命令的一个功能,把搜索结果结合为一个参数列表, 然后执行一次所期望的命令。
find ~ -type f -name 'foo*' -exec ls -l '{}' + 只会执行一次ls命令
| 选项 | 描述 | 
| -depth | 指导 find 程序先处理目录中的文件,再处理目录自身。当指定-delete 行为时,会自动 应用这个选项。 | 
| -maxdepth levels | 当执行测试条件和行为的时候,设置 find 程序陷入目录树的最大级别数 | 
| -mindepth levels | 在应用测试条件和行为之前,设置 find 程序陷入目录数的最小级别数。 | 
| -mount | 指导 find 程序不要搜索挂载到其它文件系统上的目录。 | 
| -noleaf | 指导 find 程序不要基于搜索类 Unix 的文件系统做出的假设,来优化它的搜索。 | 
stat,是一款加大马力的 ls 命令版本。这个 stat 命令会展示系统对 某个文件及其属性所知道的所有信息
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号