问题
工作中经常碰到的一个需求场景是:Linux系统,在一堆文件中查找包含特定文本的文件。
具体来说,对应我们程序员,经常需要在一大堆.c/.cpp文件中查找指定的字符串,一个一个的打开查找,实在是不明智。
我在碰到这样的需求的时候,总会在当时上网查询到相关的指令,也就是本文所说的find指令,并解决我的问题。
但问题来了,老是忘记。今天在这里记录一下,给自己提个醒,也方便正在为这个问题发愁的人。
解决方法
在当前目录下,查找所有.c文件中包含Test字符串的文件
find ./ -name “*.c” | xargs grep -b “Test”
关于find的基本用法
另外,这里也附带上find指令的基本用法:
在当前目录,及子目录下查找所有后缀是html的文件,并显示出来。
# find . -name "*.html"
将目前目录及其子目录下所有最近 10 天内更新过的文件列出
# find . -ctime -10
查找/tmp目录中更改时间在10日以前的普通文件,并在删除之前询问它们:
# find /tmp -type f -mtime +10 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;