Linux查找命令与find命令详解
一、文件查找之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命令详解的更多相关文章
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- Linux Bash命令关于程序调试详解
转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
- 【转】linux expr命令参数及用法详解
在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...
- linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...
- linux sed命令参数及用法详解
linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...
- linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)
linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要 ...
- (转)linux expr命令参数及用法详解
linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...
随机推荐
- 转载:解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...
- 多态实现的原理------新标准c++程序设计
“多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定.例子: #include<iostream> using namespac ...
- 同一个程序里有多个版本的App
在Xcode中添加多个targets进行版本控制,就是同一个app开发多个版本 以Xcode 9.3 为例 1. 创建 点击左侧工程项目文件,选择TARGETS 下的项目右击选择 Duplicate. ...
- day02.3-元组内置方法
元组——tuple的定义:test = (11,"alex",(22,33),[44,55],True) 特点:1. 元组是可迭代对象 2. 元组中元素是有序的,但其不可修改,也不 ...
- kali linux之主动信息收集(三层发现,四层发现)
三层发现: 比二层发现的优点即可路由,就是速度比二层慢,相对我们来说还是算快的,经常被边界防火墙过滤 ip icmp协议 OSI七层模型
- C# Winform下一个热插拔的MIS/MRP/ERP框架12(数据处理基类)
作为ERP等数据应用程序,数据库的处理是重中之重. 在框架中,我封装了一个数据库的基类,在每个模组启动或窗体启动过程中,实例化一个基类即可调用CRUD操作(create 添加read读取 update ...
- VS2010 UAC执行级别修改
配置属性 -> 链接器 -> 清单文件 -> UAC执行级别 改为 requireAdministrator 这个级别即可.
- vue 路由导航白话全解析
这里先放上官网的教程和说明:点击这里,vue导航守卫官方文档 路由守卫 路由守卫说白了就是路由拦截,在地址栏跳转之前 之后 跳转的瞬间 干什么事 全局守卫 全局守卫顾名思义,就是全局的,整个项目所有路 ...
- json_decode转换数组过程中,结果为null处理办法,百分之百有效
json_decode这个函数是json_encode的反函数,一般传递数据的时候为了压缩数据,会将数组格式的数据转换成json格式,用到的函数就是json_encode,然后接收到数据之后再用jso ...
- python之freshman00
编译型vs解释型 编译型优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高.可以脱离语言环境独立运行.缺点:编译之后如果需要修改就需要整 ...