1. find命令:在目录中查找指定文件
find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,尽量更精准的查找,这样消耗系统的资源少,查找的速度快。
find 命令的基本信息如下:
1.1> 按照文件名搜索
-name: 按照文件名搜索;在Windows搜索中,只要文件名包含init就会被搜索出来,但在Linux中,find 命令是完全匹配的,必须和搜索关键字一模一样才会列出,是一种精准搜索;
[root@redhat 桌面]# find /etc -name init
/etc/kdump-adv-conf/kdump_initscripts/init
/etc/sysconfig/init
/etc/init
通配符的使用:*表示匹配所有,?表示匹配单个字符;
[root@redhat 桌面]# find /etc -name *init*
/etc/kdump-adv-conf/kdump_initscripts
/etc/kdump-adv-conf/kdump_initscripts/kdumpinit.rootfs
/etc/kdump-adv-conf/kdump_initscripts/init
/etc/security/namespace.init
......
/etc/inittab
[root@redhat 桌面]# find /etc -name init???
/etc/inittab
在Linux中,严格区分大小写,如果想要不区分大小写,就可以使用-iname: 按照文件名搜索,但不区分文件名的大小写;
[root@redhat 桌面]# find /etc -name init???
/etc/inittab
[root@redhat 桌面]# touch /etc/INITTAB
[root@redhat 桌面]# find /etc -name init???
/etc/inittab
[root@redhat 桌面]# find /etc -iname init???
/etc/INITTAB
/etc/inittab
1.2> 按照文件大小搜索:-size 大小: +n大于 -n小于 n等于
1块=512k,2048块=10M;
[root@redhat 桌面]# find /etc -size +2048
/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
/etc/selinux/targeted/policy/policy.24
/etc/selinux/targeted/modules/active/policy.kern
1.3> 根据所有者进行查找
[root@redhat 桌面]# find /home -user root
/home
/home/zhangsan/zhang
/home/vftpusers/guest
1.4> 根据所属者进行查找
[root@redhat 桌面]# find /home -group root
/home
/home/zhangsan/zhang
/home/vftpusers/guest
1.5> 根据时间属性来查找:
-amin:访问时间
-cmin:改变文件属性(使用ls -l 看到的信息)
-mmin:改变文件内容
[root@redhat 桌面]# find /etc -mmin -30
/etc
/etc/gshadow-
/etc/group-
/etc/shadow
/etc/vsftpd
/etc/vsftpd/vsftpd.conf
/etc/passwd
/etc/group
/etc/shadow-
/etc/passwd-
1.6> -a:两个条件同时满足;-o:两个条件满足任意一个即可;-type:文件类型;f——文件,d——目录,l——软链接文件
[root@redhat 桌面]# find /etc -name init* -a -type f
/etc/kdump-adv-conf/kdump_initscripts/init
/etc/sysconfig/network-scripts/init.ipv6-global
/etc/sysconfig/init
/etc/selinux/targeted/contexts/initrc_context
/etc/init/init-system-dbus.conf
/etc/inittab
1.7>-exec/-ok : 把 find 命令的结果交给由-exec/-ok调用的命令 2 来处理。"{}"就代表 find 命令的査找结果。
[root@redhat 桌面]# find /etc -name inittab
/etc/inittab
[root@redhat 桌面]# find /etc -name inittab -exec ls -l {} \;
-rw-r--r--. 1 root root 884 3月 11 18:43 /etc/inittab
[root@redhat 桌面]# find /etc -name inittab -ok ls -l {} \;
< ls ... /etc/inittab > ? y
-rw-r--r--. 1 root root 884 3月 11 18:43 /etc/inittab
2. locate命令:在文件资料库查找文件
locate 命令相比find命令而言,那就是搜索速度非常快,而且耗费系统资源非常小。这是因为 locate 命令不会直接搜索硬盘空间,而会先建立 locate 数据库,然后在数据库中按照文件名进行搜索,是快速查找的搜索命令。
locate 命令的基本信息如下:
2.1> locate 文件名;
[root@redhat 桌面]# locate inittab
/etc/inittab
/usr/share/man/man5/inittab.5.gz
/usr/share/vim/vim72/syntax/inittab.vim
2.2> locate查找有一个缺点,就是如果我们新建立一个文件,那么 locate 命令找不到这个文件;因为locate不能实时更新资料库;但我们可以进行手动更新;
[root@redhat ~]# touch yangmi
[root@redhat ~]# locate yangmi
[root@redhat ~]# find /root -name yangmi
/root/yangmi
[root@redhat ~]# updatedb
[root@redhat ~]# locate yangmi
/root/yangmi
2.3> locate命令的文件资料库不收录/tmp这个临时文件的内容;
[root@redhat ~]# touch /tmp/zhaoliying
[root@redhat ~]# updatedb
[root@redhat ~]# locate zhaoliying
[root@redhat ~]#
2.4> 使用locate命令查找文件时,如果想要不区分大小写,就可以加-i选项;
[root@redhat ~]# touch TangYan
[root@redhat ~]# updatedb
[root@redhat ~]# locate tangyan
[root@redhat ~]# locate -i tangyan
/root/TangYan
3. which命令:列出命令的所在路径
which 命令的基本信息如下:
which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到命令的别名;
[root@redhat 桌面]# which cp
alias cp='cp -i'
/bin/cp
[root@redhat 桌面]# which useradd
/usr/sbin/useradd
[root@redhat 桌面]# which rm
alias rm='rm -i'
/bin/rm
[root@redhat tmp]# which ifconfig
/sbin/ifconfig
alias字段后面就是命令的别名,例如:我们在执行rm命令时,本身是没有提示信息的,但是在Linux系统中,rm 是rm -i的别名,所以才会有提示信息,是否需要删除文件?
[root@redhat tmp]# touch tangyan
[root@redhat tmp]# rm tangyan
rm:是否删除普通空文件 "tangyan"?y
4. whereis命令:搜索命令所在的目录及帮助文档路径
whereis 是搜索系统命令的命令,也就是说,whereis 命令不能搜索普通文件,而只能搜索系统命令。whereis 命令的基本信息如下:
whereis命令不仅搜索命令所在的目录,还可以搜索帮助文档的路径,针对搜索命令的路径而言,whereis命令和which命令没有什么本质区别;
[root@redhat tmp]# whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
[root@redhat tmp]# whereis rm
rm: /bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz
5. grep命令:在文件中搜寻匹配的行并输出
grep 命令的基本信息如下:
5.1> 选项:-i(忽略大、小写) -v(反转查找)
[root@redhat tmp]# grep multiuser /etc/inittab
# 3 - Full multiuser mode
[root@redhat tmp]# grep -i multiuser /etc/inittab
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
[root@redhat tmp]# grep -v "#" /etc/inittab
id:5:initdefault:
5.2> 查找条件:
查找以某字符串为开头: "^某字符串" 例如:grep "^#" /etc/inittab
[root@redhat tmp]# grep "^#" /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#.......
查找以某字符串为结尾: "某字符串$" 例如:grep ")$" /etc/inittab
[root@redhat tmp]# grep ")$" /etc/inittab
# 0 - halt (Do NOT set initdefault to this)
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 6 - reboot (Do NOT set initdefault to this)
查找空行: "^$" 例如:grep "^$" /etc/inittab
[root@redhat tmp]# grep "^$" /etc/yum.conf
[root@redhat tmp]#
6. wc命令:统计命令
wc 命令的基本信息如下:
wc 命令的参数如下:
[root@redhat tmp]# wc -l /etc/services
10774 /etc/services
[root@redhat tmp]# wc -w /etc/services
58108 /etc/services
[root@redhat tmp]# wc -c /etc/services
641020 /etc/services