linux中的查找命令
which命令:使用which命令可以看到某个系统命令是否存在,以及执行的到底是哪一个位置上的命令。在PATH指定的路径中进行搜索,
返回第一个搜索结果。
which grep /bin/grep which find /usr/bin/find which which shell built-in command
find命令:最常见和最强大的查找命令,使用格式 find <指定目录> <指定条件> <指定动作>。
find . -name "my*" 查找当前目录下(包括子目录),以my开头的所有文件。
find . -name "my*" -ls 查找当前目录下(包括子目录),以my开头的所有文件,显示详细信息。
find /etc -name "my*" -ls 查找etc目录下(包括子目录),以my开头的所有文件,显示详细信息。
指定的条件还可以是:-group -user -type(-b 块设备文件 -c字符设备文件 -d目录 -f普通文件)
-amin -n(过去n分钟之内访问的文件) -cmin -n(改变文件状态) -mmin -n(改变文件内容)
find -mmin -10 当前目录下过去10分钟之内,改变内容的文件。
find -maxdepth 2 -name passwd,在当前目录下,及其最大两层深度的子目录中查找passwd文件。
-maxdepth是1,之查找当前目录。
find -level 1 -name passwd,在当前目录,及其下一级目录中,查找passwd的文件。
find -mindepth 3 -maxdepth 5 -name passwd
-not相反匹配。
find -not -maxdepth 1 -iname "my_program",iname不区分大小写。
-perm 根据权限查找。
find -perm -g=r -type f -exec ls -l {},与当前用户同组,且有读权限,的文件,显示出来。
-size 按照size的大小来查找。
find ./ -size 2048,刚好等于2048的文件,find ./ -size +2048,大于2048的文件。
多条件匹配,-a 多个条件必须同时满足,-o两个条件满足一个即可。
find ./ -size +20480 -a -size -204800,查找同时满足大于10M,小于100M的文件。
查找最大文件,或最小的文件。
find ./ -type f -exec ls -s {} \: | sort -n -r | head -5,拿出当前目录下最大的5个文件。
find -newer FILE,查找文件修改时间,在FILE之后的文件,
find -anewer FILE,查找文件访问时间,在FILE之后的文件,
grep命令:强大的文本搜索工具,使用正则表达式搜素文本('字符'搜索),并把匹配的行打印出来。
使用格式 grep 'string' filename 不加filename时,可以用*代表文件夹中的所有文件。
'string'中可以使用正则表达式。*表示匹配前一字符N次(0...) ^表示行首 $表示行尾 \<单词开始 \>单词结尾 -r 搜索子目录
元字符.表示任何一个字符。[]内表示字符集,[^]字符集取反,[-]字符范围(0-9/a-z),\{\}表示次数
grep 'test' d* 在以d开头的文件中找test。
grep '[a-z]\{5\}' aa 在aa文件中,找连续的5次字符。
grep ’\<man\' * 匹配‘manic’和‘man’,但不是‘Batman’,注意反义字符的添加。
grep ‘\<man\>' 匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
grep pattern1 | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
-I 忽略大小写。
-n 打印匹配到的行数。
-v 打印不包含匹配到的字符串的行。(反向搜索)
-l 只输出匹配到的文件名
-L 反向搜索,输出没有匹配到的文件名
--exclude-dir= 不匹配某个类型的文件的搜索
--color=always 匹配字符 高亮
whereis命令:只能用于程序名的搜索,只搜索二进制文件(参数-b),只搜索man说明文件(参数-m)。如果省略参数,则返回所有信息。
whereis grep /bin/grep /usr/share/man/man1/grep.1.gz