如何使用Shell遍历目录及其子目录中的所有文件?
创建新的外壳文件。
输入以下代码
执行指令
grep与find的区别?
使用linux时,经常需要查找文件。其中find和grep是主要命令。这两个命令有所不同。
差异:
(1)查找命令是根据文件的属性进行查找,如文件名、文件大小、所有者、所属组、是否为空、访问时间、修改时间等。
(2)grep根据文件的内容进行搜索,按照给定的模式匹配文件的每一行。
以下是对两者区别的详细解释:
查找命令:
基本格式:findpath表达式
1.按文件名搜索
(1)find/-name#在根目录中查找文件,也就是搜索整个硬盘。
(2)在/etc目录中找到/etc-name#文件。
(3)find/etc-name#39*srm*#39#使用通配符*(0或任何倍数)。意思是用字符串SRM在/etc目录下的文件名中。
(4)寻找。-name#39srm*#39#表示查找文件名以字符串SRM在当前目录中。
2.根据文件特征搜索
(1)find/-amin-10#查找系统中最近10分钟内访问过的文件(访问时间)。
(2)find/-atime-2#查找系统中最近48小时内访问过的文件。
(3)find/-empty#查找系统中为空的文件或文件夹。
(4)find/-groupcat#查找系统中组为cat的文件。
(5)find/-mmin-5#在系统中查找最近5分钟内修改的文件(修改时间)
(6)find/-mtime-1#查找系统中最近24小时内修改的文件。
(7)find/-userfred#在系统中查找属于用户fred的文件。
(8)find/-size10000c#找出大于10000000字节的文件,(c:字节,w:,:KB,M:MB,:GB)。
(9)find/-size-1000k#找出小于1000KB的文件。
3.使用混合搜索方法查找文件
参数是:!,-和(-a),-或(-o).
(1)查找/tmp-size10000c-and-mtim:。
基本格式:查找表达式
1.主要参数
[选项]主要参数:
-c:只输出匹配行数。-i:不区分大小写。
-h:查询多个文件时不显示文件名。
-l:查询多个文件时,只输出包含匹配字符的文件名。
-n:显示匹配的行和行号。
-s:不显示不存在或没有匹配文本的错误消息。
-v:显示不包含匹配文本的所有行。
模式正则表达式的主要参数:
:忽略正则表达式殊字符的本义。
:匹配正则表达式的起始行。
$:匹配正则表达式的结束行。
Lt:从匹配正则表达式的那一行开始。
Gt:匹配正则表达式的行尾。
【】:单字符,如【A】,即A符合要求。
[-]:range,比如[A-Z],即A,B,C,Z都满足要求。
。:所有单个字符。
*:有字符,长度可以为0。
第二步:例子
(1)grep#39test#39d*#显示以d开头的文件中包含test的所有行
(2)grep;测试与测试。;aabbcc#显示aa、bb和cc文件中包含测试的行。
(3)grep;{5}aa#显示包含每行至少有5个连续小写字符的字符串的所有行。
(4)grepmagic/usr/src#显示/usr/src目录(不包括子目录)中的文件包含魔线。
(5)grep-rmagic/usr/src#显示包含magic的/usr/src目录下的文件(包括子目录)中的行。
(6)grep-w模式文件:只匹配整个单词,不匹配部分字符串(如matching魔术与表演。;而不是神奇的)