一、文件查找之locate命令

locate :
非实时的,查找时根据全系统文件数据库进行的,模糊查找,
update 手动生成文件数据库
速度快

依赖于updatedb数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#手动更新locate数据库
[root@lovelace scripts]# updatedb
#使用locate查找文件 (速度好快的说)
[root@lovelace scripts]# locate *.py
/home/scripts/factorial.py
/home/scripts/input.py
/usr/lib/python2.4/fileinput.py
/usr/lib/python2.4/fileinput.pyc
/usr/lib/python2.4/fileinput.pyo
/usr/lib/python2.4/site-packages/dogtail/rawinput.py
/usr/lib/python2.4/site-packages/dogtail/rawinput.pyc
/usr/lib/python2.4/site-packages/dogtail/rawinput.pyo
/usr/lib/python2.4/test/pyclbr_input.py
/usr/lib/python2.4/test/pyclbr_input.pyc
/usr/lib/python2.4/test/pyclbr_input.pyo
/usr/lib/python2.4/test/test_fileinput.py
/usr/lib/python2.4/test/test_fileinput.pyc
/usr/lib/python2.4/test/test_fileinput.pyo

二、文件查找之find命令

find:
实时
精确
支持众多查找规则
遍历指定目录中的所有文件完成查找,速度慢

find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
查找到以后的处理操作:默认为显示

匹配标准:
-name 'filename':对文件名作精确匹配
文件名通配:
* 任意长度的任意字符
? 任意的单个字符
[] 选项内的字符
-iname 'filename':文件名匹配时不区分大小写
-regex pattern 基于正则表达式进行文件名匹配

-user username :根据属主查找
-group groupname :根据属组查找

-gid gid:根据gid查找
-uid uid::根据udi查找

-nouser 查找没有属主的文件
-nogroup 没有属组的文件

example: find /tmp -nouser

1
2
3
4
5
6
[root@lovelace scripts]# find /tmp -name test
/tmp/sources/httpd-2.2.17/srclib/apr-util/test
/tmp/sources/httpd-2.2.17/srclib/apr/test
/tmp/sources/httpd-2.2.17/modules/test
/tmp/sources/httpd-2.2.17/test
/tmp/test

根据文件类型来查找

-type
f:普通文件
d: 目录
c: 字符
b: 块设备
l: 链接
p: 管道
s: 套接字

example:find /etc -type d

1
2
3
4
5
6
7
#查找/tmp目录下名字为test 而且文件格式为目录的
[root@lovelace scripts]# find /tmp -type d -a -name test
/tmp/sources/httpd-2.2.17/srclib/apr-util/test
/tmp/sources/httpd-2.2.17/srclib/apr/test
/tmp/sources/httpd-2.2.17/modules/test
/tmp/sources/httpd-2.2.17/test
/tmp/test

根据文件大小查找

-size
[+|-]#k 没有+和-就代表是精确匹配
[+|-]#m
[+|-]#G

example:find /tmp -size +10M 查找/etc目录下大于10M的文件

组合条件:这个需要了解摩根定律
-a:与 默认
-o:或
-not :非
example:find /tmp -not -user user1 -o -not -type d

1
2
3
4
5
6
7
8
#查找/tmp目录下文件格式为目录,而且大小在26k到32k之间的目录
[root@lovelace scripts]# find /tmp -type d -a -size +16k -a -size -32k
/tmp/sources/httpd-2.2.17/docs/manual/mod
/tmp/sources/php-5.2.13/ext/reflection/tests
/tmp/sources/php-5.2.13/ext/date/tests
/tmp/sources/php-5.2.13/ext/spl/tests
/tmp/sources/php-5.2.13/tests/classes
/tmp/sources/php-5.2.13/Zend/tests

根据文件时间戳来查找:
以天为单位的:

改变时间:-mtime
修改时间:-ctime
查看时间:-atime 
[+|-]# 默认时间戳为5天 
-5:5天内访问过
+5:至少5天没访问过了
5:离现在刚好5天访问过

以分钟为单位的:
-mmin:
-cmin:
-amin:

find /tmp -amin –5 5分钟内被访问过的文件

至少多久没有被访问的,且文件大小超过多少的,执行删除操作
find /tmp -atime +30 -a –size +100M -exec 'rm -rf *' \;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#查找home目录下至少5天没被访问过的文件
[root@lovelace scripts]# find /home/ -ctime -5
/home/scripts
/home/scripts/list
/home/scripts/for
/home/scripts/for/dir.sh
/home/scripts/for/three.sh
/home/scripts/for/checkbash.sh
/home/scripts/for/sorsum.sh
/home/scripts/while
/home/scripts/while/readpasswd.sh
/home/scripts/while/catwhile.sh
/home/scripts/case
/home/scripts/case/showmenu.sh
/home/scripts/case/showmenu
/home/scripts/case/2showmenu.sh
/home/scripts/if
/home/scripts/if/grade.sh
/home/scripts/51cto
/home/scripts/51cto/info.tt
/home/scripts/51cto/info.sh
/home/scripts/51cto/1.sh
/home/scripts/51cto/argument.sh
/home/scripts/51cto/sum.sh

根据权限查找:
-perm mode :精确匹配
-perm -mode :每一位权限都必须精确匹配 文件权限能完全包含此mode的均符合标准
-perm /mode :9位权限中有任何一位符合条件的

example:find /tmp -perm –001 查找其他用户有写权限的文件

find的动作:
-print 默认
-ls:类似 ls -l的形式显示文件的每一个信息

-ok command {} \; 会每次执行进行询问操作,需要用户确认
-exec command {} \; 不会惊醒询问操作
引用原来的额名字,使用{}

example:find /tmp -perm -020 -exec mv {} {}.new \;

1
2
3
4
5
6
7
8
9
#找出home中大小为16k到32k之间的文件,然后传递给exec 并显示出来
[root@lovelace scripts]# find /home/ -size +16k -a -size -32k -exec ls -lh {} \;
-rw-r--r-- 1 root root 20K 05-03 03:04 /home/nick/etc/gconf/gconf.xml.defaults/%gconf-tree-li.xml
-rw-r--r-- 1 root root 20K 05-03 03:04 /home/nick/etc/gconf/gconf.xml.defaults/%gconf-tree-ug.xml
-rw-r--r-- 1 root root 25K 05-03 03:04 /home/nick/etc/gconf/schemas/drivemount.schemas
-rw-r--r-- 1 root root 20K 05-03 03:04 /home/nick/etc/gconf/schemas/gnome-volume-control.schemas
-rw-r--r-- 1 root root 21K 05-03 03:04 /home/nick/etc/gconf/schemas/system_smb.schemas
-rw-r--r-- 1 root root 22K 05-03 03:04 /home/nick/etc/gconf/schemas/desktop_gnome_thumbnailers.schemas
-rw-r--r-- 1 root root 17K 05-03 03:04 /home/nick/etc/gconf/schemas/apps_gnome_settings_daemon_default_editor.schemas

find和xargs命令

xargs: 作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

相较于-exec command 而言,此命令功能更强悍。和find合用的时候,一般是通过管道传递给xargs

find /tmp –size +100M | xargs ‘rm –rf '

三、其他查找命令

which: 定位一个命令的完整路径,有可能会显示出命令的别名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#使用which命令查找ls命令的完整路径
[root@lovelace scripts]# which ls
alias ls='ls --color=tty'
/bin/ls
#使用ldd命令查看ls所依赖的库文件(这里需要用到ls的完整路径)
[root@lovelace scripts]# ldd /bin/ls
linux-gate.so.1 =>  (0x00cf8000)
librt.so.1 => /lib/librt.so.1 (0x00d8d000)
libacl.so.1 => /lib/libacl.so.1 (0x00d62000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00de0000)
libc.so.6 => /lib/libc.so.6 (0x00110000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00d71000)
/lib/ld-linux.so.2 (0x00baf000)
libattr.so.1 => /lib/libattr.so.1 (0x003a9000)
libdl.so.2 => /lib/libdl.so.2 (0x00d55000)
libsepol.so.1 => /lib/libsepol.so.1 (0x00d98000)

whereis:与which类似,而且会额外的给出给出该命令的man页的完整路径

1
2
3
4
5
6
7
8
#使用whereis查看命令的完整路径和相应的man文件
[root@lovelace scripts]# whereis ls
ls/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
#man 查看对应的文件
[root@lovelace scripts]# man 1 ls
#man 查看对应的文件
[root@lovelace scripts]#
[root@lovelace scripts]# man 1p ls

whatis:将会在whatis数据库中查询file,当你想确认系统命令和重要的配置文件的时候

,这个命令就非常重要了,可以当做一个简单的man命令。

1
2
3
[root@lovelace scripts]# whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

总结:之前面对which、whatis、whereis的时候,总是犯糊涂,这几个命令的作用老是给搞混,所以特此留记,以防止在搞混,另外,find命令对我们的运维工作至关重要,尤其是针对服务器被入侵之后,文件是否被篡改有着非同一般的功效。

Linux查找命令与find命令详解的更多相关文章

  1. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  2. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  3. (转)linux traceroute命令参数及用法详解--linux跟踪路由命令

    linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...

  4. linux mount命令参数及用法详解

    linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...

  5. 【转】linux expr命令参数及用法详解

    在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...

  6. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  7. linux dmesg命令参数及用法详解(linux显示开机信息命令)

    linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...

  8. linux sed命令参数及用法详解

    linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...

  9. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

    linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至:            linux dd命令使用详解 dd 的主要 ...

  10. (转)linux expr命令参数及用法详解

    linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...

随机推荐

  1. 微服务linux启动停止脚本

    # 停止脚本#!/bin/bash #其他服务停止脚步可以通过修改APP_MAIN参数即可 APP_MAIN=com.idoipo.infras.eureka.center.Application t ...

  2. Android 应用检查更新并下载

    1.在Android应用当中都有应用检查更新的要求,往往都是在打开应用的时候去更新下载. 实现的方法是:服务器端提供接口,接口中可以包含在最新APK下载的URL,最新APK的VersionCode,等 ...

  3. 从头开始学eShopOnContainers——设置WebSPA单页应用程序

    一.简介 Web SPA单页应用程序需要一些额外的步骤才能使其工作,因为它需要在生成Docker镜像之前构建JavaScript框架依赖项和JS代码. 二.安装基础环境 1.安装NPM 为了能够使用n ...

  4. 泛型2(lambda表达式/参数绑定)

    lambda 表达式: Lambda表达式完整的声明格式如下: [capture list] (params list) mutable exception-> return type { fu ...

  5. 泛型1(一些algorithm函数)

    泛型算法本身不会执行容器的操作,它们只会运行于迭代器之上,执行迭代器的操作.因此算法可能改变容器中保存的元素,也可能在容器内移动元素,但永远不会直接添加或删除元素. 只读算法: accumulate: ...

  6. Ubuntu 安装后的配置及美化(二)

    Ubuntu安装后的配置与美化(二) 上篇文章讲了安装ubuntu后的一系列基础的配置,已经可以满足日常的使用了,这篇文章讲一下安装 IDE 及一些其他的配置. 1.安装 SSR 下载 SSR 客户端 ...

  7. python自带的排列组合函数

    需求: 在你的面前有一个n阶的台阶,你一步只能上1级或者2级,请计算出你可以采用多少种不同的方法爬完这个楼梯?输入一个正整数表示这个台阶的级数,输出一个正整数表示有多少种方法爬完这个楼梯. 分析:提炼 ...

  8. C#中调用SAPI实现语音识别的2种方法

    通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR.下面我们就介绍并贴出相关代码.主要有两种方式: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来 ...

  9. BZOJ3156 防御准备 斜率优化dp

    Description   Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sampl ...

  10. git 各个区的区别

    Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited) 把文件往Git版本库里添加的时候,是分两步执行的: 第一步是用 git add 把文 ...