Linux 常用查询命令
一、文件查询1、find1)基本格式:find / -name fileName如 :find / -name my.cnf 2)精准定位+快速搜索: find /dirpath -name fileName如:find /etc -name my.cnf在etc 目录下查询名称为my.cnf 的文件的文件路径 3)模糊查询:find / dirpath...
一、文件查询
1、find
1)基本格式:find / -name fileName
如 :find / -name my.cnf
2)精准定位+快速搜索: find /dirpath -name fileName
如:find /etc -name my.cnf
在etc 目录下查询名称为my.cnf 的文件的文件路径
3)模糊查询:find / dirpath -name '*fileName*'
根据部分文件名查找方法:
这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多
如:find /etc -name '*my*'
在etc 目录下查询名称包含‘my’ 的文件的文件路径
4)如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同的。
4.1) 通过文件大小查询:
基本格式:find /dirpath -size fileSize
如:find /etc -size 1066c (注:‘c’ 表示byte)
4.2)如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。
如:find /var/tomcat -size +4000000c 在tomcat 目录下查询大于4000000bytes的文件
如:find /var/tomcat -size -1c 在tomcat 目录下查询小于1byte的文件
5)通过修改时间查找
5,1) 查找系统中最后N分钟访问的文件
find /dirpath -amin n
如:find -amin +1
5.2) 查找系统中最后n*24小时访问的文件
find /dirpsth -atime n
如:find -atime -1
5.3)查找系统中最后N分钟被改变状态的文件
find /dirpath -cmin n
如: find -cmin +1
5.4)查找系统中最后n*24小时被改变状态的文件
find /dirpath -ctime n
如: find -ctime +1
5.5)查找在系统中最后n分钟里修改过的文件
find /dirpath -mmin n
如:find /var/tomcat -mmin -5 查找在tomcat文件夹中最后5分钟里修改过的文件
5.6)查找在系统中最后24*n小时里修改过的文件
find /dirpath -mtime n
如:find /var/tomcat -mmin -0.5 查找在tomcat文件夹中最后12小时里修改过的文件
6)查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
find /dirpath -empty
如: find /etc -empty
7)多条件查询(如:文件名 ,文件大小、文件修改时间。。。)
find /dirpath -name '*fileName*' -and -size +fileSize -and -mmin -curtime
如; find /etc -name '*my*' -and -size -2000c -and -mtime +1
注:在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
参考链接: https://blog.csdn.net/ydfok/article/details/1486451
参考链接: https://blog.csdn.net/wangjunjun2008/article/details/19840671
8)其他操作
-name 按照文件名查找文件。
find /dir -name filename 在/dir目录及其子目录下面查找名字为filename的文件
find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
-perm 按照文件权限来查找文件。
find . -perm 755 –print 在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
find /apps -path "/apps/bin" -prune -o –print 在/apps目录下查找文件,但不希望在/apps/bin目录下查找
find /usr/sam -path "/usr/sam/dir1" -prune -o –print 在/usr/sam目录下查找不在dir1子目录之内的所有文件
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
find / -name "CON.FILE" -depth –print 它将首先匹配所有的文件然后再进入子目录中查找
-user 按照文件属主来查找文件。
find ~ -user sam –print 在$HOME目录中查找文件属主为sam的文件
-group 按照文件所属的组来查找文件。
find /apps -group gem –print 在/apps目录下查找属于gem用户组的文件
-mtime -n +n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日以前的文件
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
find / –nogroup -print
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
find /home -nouser –print
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,
诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
find /etc -type d –print 在/etc目录下查找所有的目录
find . ! -type d –print 在当前目录下查找除目录以外的所有类型的文件
find /etc -type l –print 在/etc目录下查找所有的符号链接文件
-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
find . -size +1000000c –print 在当前目录下查找文件长度大于1 M字节的文件
find /home/apache -size 100c –print 在/home/apache目录下查找文件长度恰好为100字节的文件
find . -size +10 –print 在当前目录下查找长度超过10块的文件(一块等于512字节)
-mount:在查找文件时不跨越文件系统mount点。
find . -name “*.XC” -mount –print 从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其他文件系统)
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \;,注意{}和\;之间的空格
$ find ./ -size 0 -exec rm {} \; 删除文件大小为零的文件
$ rm -i `find ./ -size 0`
$ find ./ -size 0 | xargs rm -f &
为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中:
$ find . -type f -exec ls -l {} \;
在/logs目录中查找更改时间在5日以前的文件并删除它们:
find /logs -type f -mtime +5 -exec rm {} \;
-ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find . -name "*.conf" -mtime +5 -ok rm { } \; 在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
说明: 如果你要寻找一个档案的话,那么使用 find 会是一个不错的主意。不过,由于 find 在寻找数据的时候相当的耗硬盘,所以没事情不要使用 find 啦!有更棒的指令可以取代呦,那就是 whereis 与 locate 咯~
一些常用命令
1. find . -type f -exec ls -l {} \;
查找当前路径下的所有普通文件,并把它们列出来。
2. find logs -type f -mtime +5 -exec rm {} \;
删除logs目录下更新时间为5日以上的文件。
3.find . -name "*.log" -mtime +5 -ok rm {} \;
删除当前路径下以。log结尾的五日以上的文件,删除之前要确认。
4. find ~ -type f -perm 4755 -print
查找$HOME目录下suid位被设置,文件属性为755的文件打印出来。
说明: find在有点系统中会一次性得到将匹配到的文件都传给exec,但是有的系统对exec的命令长度做限制,就会报:”参数列太长“,这就需要使用xargs。xargs是部分取传来的文件。
5. find / -type f -print |xargs file
xargs测试文件分类
6. find . -name "core*" -print|xargs echo " ">/tmp/core.log
将core文件信息查询结果报存到core。log日志。
7. find / -type f -print | xargs chmod o -w
8. find . -name * -print |xargs grep "DBO"
2、grep
基本格式:grep [选项] pattern [文件名]
常用选项解释:
- -? 同时显示匹配行上下的?行,如:grep -2 pattern filename 同时显示匹配行的上下2行。
- -b,—byte-offset 打印匹配行前面打印该行所在的块号码。
- -c,—count 只打印匹配的行数,不显示匹配的内容。
- -f File,—file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
- -h,—no-filename 当搜索多个文件时,不显示匹配文件名前缀。
- -i,—ignore-case 忽略大小写差别。
- -q,—quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。
- -l,—files-with-matches 打印匹配模板的文件清单。
- -L,—files-without-match 打印不匹配模板的文件清单。
- -n,—line-number 在匹配的行前面打印行号。
- -s,—silent 不显示关于不存在或者无法读取文件的错误信息。
- -v,—revert-match 反检索,只显示不匹配的行。
- -w,—word-regexp 如果被\<和>引用,就把表达式做为一个单词搜索。
- -V,—version 显示软件版本信息。
pattern为所要匹配的字符串,可使用下列模式
- . 匹配任意一个字符
- * 匹配0 个或多个*前的字符
- ^ 匹配行开头
- $ 匹配行结尾
- [] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围,
- 例如[a-z]表示字母a 至z 中的任意一个
- \ 转意字符
3、xargs
4、locate
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
如:locate /etc/my 查询 etc 目录下my开头的文件
5、 whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
如: whereis my.cnf
6、which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
如: which java
更多推荐
所有评论(0)