1.find命令
- 按文件名查询:使用参数 -name
- 命令:find 路径 -name “文件名”
- 示例:
find /home -name "*.c"
- 按文件类型查询:使用参数 -type (命令:find 路径 -type 类型)
- 普通文件类型用f表示而不是 -
- d -> 目录
- l -> 符号链接
- b -> 块设备文件
- c -> 字符设备文件
- s -> socket文件
- p -> 管道文件
- 按文件大小查询:使用参数 -size (命令:find 路径 -size 范围)
- 范围
- 大于:+表示 – +100k
- 小于:-表示 – -100k
- 等于: 不需要添加符号 – 100k
- 大小
- M 必须大写(10M)
- k 必须小写(20k)
- c 表示字节数
- 例子: 查询目录为家目录
- 等于100k的文件:
find ~/ -size 100k
- 大于100k的文件:
find ~/ -size +100k
- 大于50k, 小于100k的文件:
find ~/ -size +50k -size -100k
- 等于100k的文件:
- 按文件日期
- 创建日期:-ctime -n/+ n
- -n: n天以内
- +n: n天以外
- 修改日期:-mtime -n/+n
- 访问日期:-atime -n/+n
- 按深度
- -maxdepth n(层数)
- 搜索n层以下的目录, 搜索的层数不超过n层
- -mindepth n(层数)
- 搜搜n层以上的目录,搜索的层数不能小于n层
- 高级查找(查找指定目录下所有目录,并列出目录中文件详细信息)
find ./ -type d -exec shell命令 {} \;
- 例:
find ./ -type d -exec ls -l {} \;
find ./ -type d -ok shell命令 {} \;
- 例:
find ./ -type d -ok ls -l {} \;
find ./ -type d | xargs shell命令
- 例:
find ./ -type d | xargs ls -l
- 尽量使用
find ./ -type d | xargs ls -l
,因为find ./ -type d -exec shell命令 {} \;
是放到缓存后再操作,当文件较多时比较费时间。
1.1 find … -exec … {} ; 解释
1.2 find … -ok … {} ; 解释
原理思想是和find ... -exec ... {} \;
一致,唯一的区别就-ok是一个一个提示该文件是否要操作对应的指令,因此ok比较安全, 特别是在执行rm删除文件的时候.
2.grep命令
- grep -r(有目录) “查找的内容” 搜索的路径
- -r: 若是目录, 则可以递归搜索
- -n:可以显示该查找内容所在的行号
- -i:可以忽略大小写进行查找
- -v:不显示含有某字符串
- 搜索当前目录下包含hello world字符串的文件
- grep -r -n “hello world” ./ ------显示行号
- grep -r -i -n “HELLO world” ./ -------忽略大小小查找
3.find和grep命令结合使用
- 先使用find命令查找文件, 然后使用grep命令查找哪些文件包含某个字符串
- find . -name “*.c” | xargs grep -n “main”