以下是如何使用 find 命令的一些示例:
1.要列出文件系统中所有文件名含有 .profile 的文件,请输入下面的命令:
# find / -name .profile
按下 Enter 键。
该命令搜索整个文件系统,将所有文件名含 .profile 的文件的全路径名写出。斜杠 (/) 告诉 find 命令搜索 /(根)目录及其所有的子目录。
要节省时间,可以通过指定文件可能所在的目录来限制搜索。
2.要列出当前目录树中具有 0600 权限代码的文件,请输入下面的命令:
# find . -perm 0600
按下 Enter 键。
该命令列出仅具有所有者读权限和所有者写权限的文件名。圆点 (.) 告诉 find 命令搜索当前目录及其子目录。关于权限代码的解释,请参阅 chmod 命令。
3.要在几个目录中搜索具有特定权限代码的文件,请输入下面的命令:
# find manual clients proposals -perm -0600
按下 Enter 键。
该命令列出具有所有者读权限和所有者写权限及其它可能权限的文件的名称。被搜索的是 manual、clients 和 proposals 目录及其子目录。在前例中,-perm 0600 仅选择具有与 0600 精确匹配的权限代码的文件。在该例中,-perm -0600 选择的文件,其权限代码允许 0600 指定的访问以及高于 0600 级别的其它访问。这样就还与权限代码 0622 和 2744 匹配。
4.要列出当前目录下所有在最近 24 小时内有更改的文件,请输入下面的命令:
# find . -ctime 1
按下 Enter 键。
5.要搜索有多个链接的常规文件,请输入下面的命令:
# find . -type f -links +1
按下 Enter 键。
该命令列出有多于一个链接(-links +1)的普通文件(-type f)的名字。
注:
每个目录都至少有两个链接:其父目录的入口及其自身的 .(圆点)入口。有关多文件链接的更多信息,请参阅 ln 命令。
6.要搜索所有精确长度为 414 字节的文件,请输入下面的命令:
# find . -size 414c
按下 Enter 键。
二.可以使用grep 命令在文件内查找文本字符串
grep 命令搜索由 Pattern 参数指定的模式,并且将每个匹配的行写到标准输出中。
以下是如何使用 grep 命令的一些示例:
1.要在名为 pgm.s 的文件里搜索包含模式匹配字符 *、^、?、[、]、\(、\)、\{ 和 \} 其中几种的模式(这种情况下以任意大小写字母开头的行),请输入下面的命令:
# grep "^[a-zA-Z]" pgm.s
按下 Enter 键。
该命令显示 pgm.s 文件中所有以字母开头的行。
2.要显示名为 sort.c 的文件中不匹配某种模式的所有行,请输入下面的命令:
# grep -v bubble sort.c
按下 Enter 键。
该命令显示 sort.c 文件中所有不包含单词 bubble 的行。
3.要显示 ls 命令的输出中匹配字符串 staff 的行,请输入下面的命令:
# ls -l | grep staff
按下 Enter 键。
4.查找字符串中某个字符出现的次数: grep -o 字符|sed -n '$='
echo "aaaabbcaabccdaddddbeaqwergfagasfqwefasdsfasdfqe"|grep -o a|sed -n '$='
一直以为查找当前目录内包含x的查找方式是 find . |grep x
后来查看多方资料发现,应该是 find . -exec grep x {} \; 或者 find .|xargs grep x 命令。
为什么会这样能,因为通道命令符是把上一部的结果传递给下一步来处理,在 find . |grep x中虽然看似和find .|xargs grep x差不多,但是实际上还是有区别的。应为find .得到的结果是一串文件名集合,如果直接传递给grep的话,grep会把这些文件名看作一些无意义的字符串来处理。但是传递给xargs,他会把他当作一个有意义的文件来处理。
http://javag.javaeye.com/blog/249883
阅读(3906) | 评论(0) | 转发(0) |