find命令:
语法:find 搜索目录 -name 文件名称,例如 find /root -name source.cpp
可以使用通配符,注意使用通配符需要加引号”“。
- * 匹配任意字符串
? 匹配任意单个字符
[] 匹配[]内字符,可以按,-区分,也可无符号区分
! 匹配非!后的字符串中的每一个字符 一般配合[]使用
例如find /root -name "a*";就是找出所有以a开头的文件
例如find /root -name "*.cpp";就是找出所有以.cpp结尾的文件
按照文件类型搜索type:
普通文件类型f,目录类型d,软连接类型l,字符设备类型c,块设备类型b,管道类型p,本地套接字类型s
例如 find ./ -name a.cpp -type f ,就是在当前目录下找一个普通文件a.cpp
按照文件大小搜索size:
例如 find ./ -size +4k -size -10k -type f -name a.cpp 表示搜索当前目录下大于4K小于10K的普通文件,且名称为a.cpp的普通文件
千字节k,兆字节M,吉字节G
-exec参数:
find添加了-exec参数后,命令的尾部需要添加一个后缀{} \; 例如 find /root -name a.cpp -type f -exec ls -lh {} \; 在-exex后添加的shell命令是处理find搜索后的结果,这个调用交互式程序没问题。
-ok参数:
使用方法和操作和-exec相同,只是会和用户交互,需要用户输入y或n来确认是否执行。 find /root -name a.cpp -type f -ok ls -lh {} \;
-xargs参数:
也是和-exec参数效果相同,只不过不用写后缀而已, find /root -name a.cpp -type f | xargs ls -lh
注意不要通过 xargs 直接调用交互式程序。调用交互程序如vim,然后退出vim后会发现输出什么什么都不显示。。。。。。此时要不退出终端,重新连接,要不输入 stty sane 这个命令,注意输入不显示的。
grep命令:
grep是搜索文件,命令输出内容,find是查找文件,两者不相同
语法: grep "查找的内容" 文件路径
-r,如果需要搜索目录中的文件内容,需要递归操作,必须使用-r;
-i,忽略大小写;
-n,显示第几行。
例如 grep "include" /usr -rn ,会输出一大堆东西
也可以配合管道符号 | 来过滤输入的信息,如 lscpu | grep CPU
locate命令:
locate命令要比find -name快得多,原因在于locate
命令在查找文件时并不扫描具体目录,而是搜索一个已经创建好的数据库/var/lib/mlocate/mlocate.db
。这个数据库中含有本地几乎所有文件信息(一些被排除在外的目录或刚创建的目录可能不会包含在数据库中。Linux系统会自动创建这个数据库,并且通过定时任务每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate
之前,先使用updatedb
命令,手动更新数据库,但这也需要一定的时间,时间长短和空间大小文件数量有关。
语法:locate 文件名
例如 locate a.cpp
Comments NOTHING