Linux 常用查询命令

一、文件查询

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值