find 命令
语法:
find 搜索路径 匹配表达式
功能:该命令用于在指定路径中查找符合条件的文件,搜索路径可以是多个目录,不同目录之间以空格分隔
(1)匹配表达式1
-name filename :要查找的文件名。可以使用通配符“*”,“?”,但要用双引号将文件名引起来
例子:【 root@localhost tmp】# find –name “h*” –print //翻译:在当前目录下查找以h开头的文件
例子:【 root@localhost tmp】# find / –name host -print //翻译:在整个文件系统中查找名为hosts的文件
-name filename :要查找的文件名。可以使用通配符“*”,“?”,但要用双引号将文件名引起来
例子:【 root@localhost tmp】# find –name “h*” –print //翻译:在当前目录下查找以h开头的文件
例子:【 root@localhost tmp】# find / –name host -print //翻译:在整个文件系统中查找名为hosts的文件
-user username :查找属于username用户的文件
例子:【 root@localhost tmp】# find /home –user user1 –print 翻译:找出/home下属于用户user1的所有文件
-group groupname:查找属于groupname组的文件
-print:显示找到文件路径名
(2)匹配表达式2
-exec 命令{} :对找到的匹配文件,执行所列出的命令,而不询问用户是否执行这些命令,参数{} 由find找到当前的文件路径名取代,命令行末尾必须有“\;”。
例子:【 root@localhost tmp】# find /home –user user1 –exec cat {}\;|more //找出/home下属于用户user1的所有文件并显示其内容
例子:【 root@localhost tmp】# find /home –user user1 –exec rm –r {} \; //找出/home下属于用户user1的所有文件并删除
-ok 命令 {} :与-exec的用法相同,在执行命令之前询问用户是否要执行命令
(3)匹配表达式3
-atime n:查找前n天访问过的文件(仅第n天这一天)
-atime +n:查找前n天之前访问过的文件;-n则表示前n天之后
例子:【 root@localhost tmp】# find /home –atime +365 –print //找出用户一年前访问过的文件
例子:【 root@localhost tmp】# find $home –user user1 –atime +3 –exec rm –r {} \; //找出用户user1主目录下属于自己的前3天之前访问过文件并删除
(4)匹配表达式4
-type filetype:指定查找的文件类型
filetype可以是:b块文件;c字符设备文件;d目录文件;f一般文件
例子:【 root@localhost tmp】# find –type d –print //查找当前目录下的所有的子目录
例子:【 root@localhost tmp】# find –type f –print //查找当前目录下的所有的普通文件
(5)匹配表达式5
-size Number和 -size Numberc:按照文件大小进行查找。 Numberc表示以字节为单位,否则以块(一般是512字节)为单位。
-Number(或-Numberc)表示查找比该值小的文件,+Number(或-Numberc)表示查找比该值大的文件
例子:【 root@localhost tmp】# find –size -10 –print //查找当前目录下所有长度小于10块的文件
例子:【 root@localhost tmp】# find –size -10c –print | ls –l //查找当前目录下所有长度小于10字节的文件并以长格式显示文件信息
例子:【 root@localhsot tmp】# find –size +100 –size -200 –exec ls –s {} \; //在当前目录下查找100~200块长的文件并显示文件的实际块数
例子:【 root@localhost tmp】# find –size -10 –print //查找当前目录下所有长度小于10块的文件
例子:【 root@localhost tmp】# find –size -10c –print | ls –l //查找当前目录下所有长度小于10字节的文件并以长格式显示文件信息
例子:【 root@localhsot tmp】# find –size +100 –size -200 –exec ls –s {} \; //在当前目录下查找100~200块长的文件并显示文件的实际块数
grep 命令
语法:
grep【参数】 查找模式 文件名 【文件名】
功能:grep命令用于在指定文件中查找与模式匹配的行,并将匹配的行显示在标准输出上。如果没有指定文件,则从标准输入中读取。当在多个文件中进行查找中,将在每一行输出之前加上文件名。在搜索的文件名中允许使用通配符。
参数:
-c:只显示匹配行的行数
-i:匹配时不区分大小写,默认情况下匹配时区分大小写
-h:在多个文件中查找时,输出行前不显示文件名
-n:在输出前加上匹配串所在行的行号(文件首行行号为1)
-v:只显示不包含匹配串的行。
-f filename:从指定文件中获取搜索模式,每行一个搜索模式项
例子:【 roo@locallost user1】# grep printf*.c 翻译:在当前目录下的所有C文件中查找printf字符串
例子:【 roo@locallost user1】# grep user1 /ect/password 翻译:将系统帐号中文件包含user1的行显示出来。
当搜索模式中包含空格是,要把搜索模式用单引号括起来。
例子:【 root@localhso user1】# cat > dialog
your name is:
linux
<Ctrl+d>
【 root@localhost user1】# grep ‘your name’dialog
your name is:
在有多个搜索模式时,可以将这些搜索模式写入文件中,利用-f参数从文件中读取搜索模式项。
例子:【 root@localhost user1】# cat > mode.txt
name
lin*
<Ctrl+d>
【 root@localhost user1】# grep –f mode.txt dialog
your name is:
linux
看到chinaunix上一哥们用于查找文件内容的命令:
-----------------------------------------------------------
#> find . -type f -exec grep 'mingtian' -l {} /;
grep -l :是显示匹配的内容的文件名字!
或者:
#> find . -type f -name "*.*" |xargs grep 'xiaoshou' -l
(这个方法 不好,挺乱的,还慢,推荐前一个方法!)
-----------------------------------------------------------
想到自己常用的方法也不错,特记录下来:
#grep "printf" $(find . -name *.c)
当前: find ./ -name "*"|xargs grep "DISPLAY_TYPE_LCDC"