grep&find

grep

  按照文件内容查找文件

grep -R "struct task_struct {" /usr/src/    # 在/usr/src/中查找 包含 "文本" 的文件
grep -R "xxxx" /usr/src/ -n  # 显示行号

find

  -name

find / -name *.mp3

  -type

find / -type f(普通文件) | c(字符设备) | d(目录) | p(管道) | b(块设备) | s(socket) | l(符号链接)

  -size

默认单位512B --> 0.5k --> 一个扇区的大小
-M: 不能'm' --  find / -size +3M -size -7M  #查找 3~7M的文件
-k: 不能'K' --  find / -size +47k -size -89k  #查找47k~89k的文件

  -maxdepth

列出当前目录下有多少目录
find ./ -maxdepth 1 -type d  #默认递归找, -maxdepth指定递归层级
find ./ -maxdepth 1 -type d | wc l #输出数量

  -exec

find ./ -maxdepth 1 -name "*.sh" -exec ls -lh {}\;
find ./ -maxdepth 1 -name "*.sh" 表示查询文件
-exec 表示执行
ls -lh 要执行的语句
{} 要执行的结果在大括号里, 含义: find命令的结果放到{}中
\; ';'结束标记, 需要用转义字符转义
###############################
-exec代表后面紧接着要执行的命令
exp: find ./ -maxdepth 1 -name "*.sh" -ok rm {} \;    # 查找并删除, -ok给出删除提示

  xargs

xargs 是分批将数据放入缓冲区进行输出, 而不是一次性将结果放入缓冲区
xargs 是以NULL '\0' 为依据进行分割
搜索后使用 ls -lh输出, xargs配合管道'|'使用
find ./ -maxdepth 1 -name "*.sh" | xargs ls -lh

  -print0

touch test\ test.mp3
find ./ -maxdepth 1 -type f -print0 | xargs -0 ls -lh

  -atime

访问时间: 天
系统的日志文件路径: /var/log/
当前系统的日志文件: /var/log/syslog

  -amin

访问时间: 分钟

  -mtime

文件内容修改时间: 天为级别
find ./ -mtime +5 -exec ls -lh {} \;    # 列出5天以前修改过内容的文件
-mtime -5: 5天以内

  -mmin

文件内容修改时间: 分钟为级别

  -ctime

文件属性修改时间: 天

  cmin

文件属性修改时间: 分钟

你可能感兴趣的:(grep&find)