whereis
用来查看与特定命令相关的文件:二进制(可执行)文件,源文件,文档文件
whereis不搜索整个文件系统,只查看那些此类文件极可能存在的目录。
如:/bin,/sbin,/etc,/usr/share/man
whereis command
command是希望查找的命令名称
输出是程序所处的可执行文件的路径名,源文件的路径位置,以及说明书页的路径位置。
选项:
-b 只显示可执行文件的路径名
-m 只显示联机手册中的文件
-s 只显示源文件
locate
搜索一个特殊的数据库(该数据库中包含所有可公共访问的文件的路径名),查找所有包含特定模式的路径名。
该数据库自动维护,并定期更新。
locate pattern
pattern是在路径名中查找的模式。
选项:
-r 使用正则表达式
-c 显示匹配文件的总数,而不显示实际的文件名
-i 忽略大小写
-b 只匹配路径名的最后一部分,即文件名或基名。(最后一个/后的部分)
find
通过搜索目录树查找文件
搜索一个或多个目录树,根据指定的测试条件,查找满足特定标准的文件。一旦搜索完成,find将对查找到的文件执行某种动作。
动作可以是文件名的显示,删除文件,显示文件信息,将文件传递给另一条命令等。
为了运行find,需要指定3件事:目录路径,测试,动作。
路径:查看所以的路径,检查这些路径所表示的整个目录树。
测试:对遇到的每个文件,find应用指定的测试条件。创建一个满足测试标准的所有文件的列表。
动作:一旦搜索完成,find就对列表中的每个文件执行指定的操作。
测试
文件名 | |
-name pattern | 包含pattern的文件名 |
-iname pattern | 包含pattern的文件名(不区分大小写) |
文件特征 | |
-type [df] | 文件类型:d=目录,f=普通文件 |
-perm mode | 设置为mode的文件权限 |
-user userid | 属主为userid |
-groups groupid | 组为groupid |
-size [-+]n[cbkMG] | n[字符(字节),块,千字节,兆字节,吉字节] |
-empty | 空文件(大小=0) |
访问时间,修改时间 | |
-amin [-+]n | n分钟之前访问 |
-anewer file | fiel文件之后访问 |
-atime [-+]n | n天之前访问 |
-cmin [-+]n | n分钟之前状态改变 |
-cnewer file | file文件之后状态改变 |
-ctime [-+]n | n天之前状态改变 |
-mmin [-+]n | n分钟之前修改 |
-mtime [-+]n | n天之前修改 |
-newer file | file文件之后修改 |
ps:
+和-分别代表大于或小于
使用-name 时若用通配符,则要用引号引起。
以字节作为单位测试文件大小时,find假定讨论的是文件的内容,而不是使用的磁盘空间。
当以块,千字节,兆字节,吉字节为单位测试文件大小时,find假定讨论的是磁盘空间。
测试求反
可以通过 ! 对测试求反。
! 的两侧必须各留一个空格,并且必须引用 ! 。(\! 或 ‘!')
处理文件权限错误消息
将标准错误重定向到/dev/null
2> /dev/null
动作
将路径名写入到标准输出 | |
-fprint file | 同-print;将输出写入到file |
-ls | 显示长目录列表 |
-fls file | 同-ls;将输出写入到file |
-delete | 删除文件 |
-exec command{}\; | 执行command,{}指示匹配的文件名 |
-ok command{}\; | 同-exec;但是在运行command之前先确认 |
ps:
如果不指定动作,-print是默认动作。
-exec就像在命令行上键入命令一样,在命令中,{}用来指代find找到的文件列表。为了表明命令的末尾,必须以;结尾。
-exec为每个文件生成一条单独的命令。
处理找到的命令
xargs可以运行任何使用参数指定的命令,参数通过标准输入传递给该程序。
xargs [-prt] [istring] [comand[argument]]
command是希望运行的命令,string是占位符,argument是从标准输入读取的参数。
-i选项允许使用{}作为占位符(默认),占位符将在命令运行之前被参数取代。
-p 在命令生成时显示每条命令,在运行命令前请求许可
-t 在运行过程中显示每条命令,不可与其他选项一起使用
-r 如果没有输入参数,则不运行命令