linux中的查找命令
关于查找更详细的内容,参见《shell编程和Unix命令》
1. find命令
find命令的一般形式:
find pathname -options [-print -exec -ok]
参数 | 说明 |
pathname | find查找目录。. 来表示当前目录,用 / 来表示系统根目录 |
-option | find查找选项,也就是find根据什么东西来查找 |
将匹配的文件输出到标准输出 | |
-exec | 执行shell命令。相应命令形式为'command'{} \; 注意{}和\; 之间的空格 |
-ok | 以更为安全的模式来执行shell命令 |
1.1 -name
按照文件名查找。最常用的用法。例如:
在当前目录及子目录查找所有txt文件并打印出来,可以用:
find . -name "*.txt" -print
1.2 使用exec来执行shell命令
匹配到文件对其进行某些操作。例如:
find . -type f -exec ls -l {} \;
上面的例子,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
1.3 xargs
有些系统对能够传递给exec的命令长度有限制,有可能会出现溢出错误。xargs用处就在此。
例子1:在整个系统中查找内存信息转储文件(core dump),然后把结果保存到/tmp/core.log文件中
find . -name "core" -print | xargs echo "" > /tmp/core.log
例子2:用grep命令在所有普通文件中搜索device这个词
find / -type f -print | xargs grep "device"
2. grep
对文本文件进行模式查找,通常用来在文件中查找字符串。在grep命令中输入字符串参数时,需要使用双引号。
选项:
-n 显示匹配行及行号。 最实用的这个选项
例子:在当前目录下所有 .c 文件中查找字符串“sort”并显示行号
grep -n "sort" *.c