Linux 文件及内容查找find 和grep命令

作者 FarLee 2016年10月9日 18:12:35   ‖浏览(3,148)

Linux 文件及内容查找find 和grep命令

在当前目录查找文件名为linux开头的文件:

find . -name linux\*

在指定目录下查找.php后缀的文件:

find /path -name "*.php"

文件名忽略大小写:

find . -iname "tesT*.PHP"

指定文件类型:

find / -type f
  • f: 文件
  • d: 目录
  • l: 符号链接

指定文件大小:

find / -size -50c  小于50字节
find / -size +10M  大于10M
  • c: 字节
  • k: 千字节
  • M: 兆
  • G: 千兆
  • b: 512 字节块

指定时间查找文件:

find / -mtime 1   昨天修改过的文件
find / -atime -3  最近3天内访问过的文件
find / -mmin +3   比3分钟前还早的时间修改过的文件
  • atime: 最近访问时间
  • mtime: 最近修改时间.
  • ctime: 文件meta信息最近变化时间.

计算符合要求的文件数量:

find -name file_name | wc -l

查找符合文件并执行命令, 如修改权限为644的文件为666:

find . -type f -perm 644 -exec chmod 664 {} \;
{}是查找文件结果的占位符, \;表示exec的命令结束了.

查找文件内容中包含某字符串或符合某正则的文件:

find . -name "*.c" -print | xargs grep "PHP is the best language"

在系统默认特定目录下查找php的可执行程序, 源码和帮助文件路径:

whereis php

在当前用户的PATH路径下查找可执行程序:

which php    或 which -a php 查找所有

另外用grep命令更方便查找文件内容:

grep -rnw '/path/to/find/' -e "pattern"
  • -r or -R 递归目录查找
  • -n 显示行数
  • -w 表示匹配整个单词.
  • -i 忽略文件内容和文件名大小写
  • -l 小写的L表示只显示文件名

指定或排除文件后缀:

grep --include=\*.{html,php} -rnw '/path/to/find/' -e "pattern" 
grep --exclude=*.xml -rnw '/path/to/find/' -e "pattern"

指定目录或排除目录( –exclude-dir 或 –include-dir ):

grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/find/' -e "pattern"
grep -rnwil --exclude-dir=.* /path/to/find -e "patteRN"  排除.ssh .svn等目录

来说兩句