Linux学习笔记(5)

1、find命令

find [搜索范围] [搜索条件]

搜索文件:

[root@localhost ~]# find / -name install.log(耗时较长)
/root/install.log

避免大范围搜索,会非常耗费系统资源

find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配

Linux中的通配符

* 匹配任意内容

运行效果:

[root@localhost ~]# find /root -name "install.log*"
/root/install.log
/root/install.log.syslog

? 匹配任意一个字符

[] 匹配任意一个中括号内的字符

运行效果:

[root@localhost ~]# find /root -name "ab[cd]"
/root/abc
/root/abd


find /root -iname install.log

不区分大小写


find /root -user root

按照所有者搜索


find /root -nouser

查找没有所有者的文件


find /var/log/ -mtime +10

查找10天前修改的文件

-10 10天内修改文件

10 10天当天修改的文件

+10 10天前修改的文件


atime  文件访问时间

ctime 改变文件属性

mtime 修改文件内容


find . -size 26k

"."代表当前目录

查找文件大小是26KB的文件


-26k 小于26KB的文件

26k 等于26KB的文件

运行效果:

[root@localhost ~]# find . -size 26k
./install.log

+26k 大于26KB的文件


find . -inum 262422

查找i节点是2624222的文件

运行效果:

[root@localhost ~]# find /root -inum 262422
/root/abc


find /etc -size +20k -a -size -50k

查找/etc/目录下,大于20KB并且小于50KB的文件

-a and 逻辑与,两个条件都满足

-o or 逻辑或,两个条件满足一个即可

运行效果:

[root@localhost ~]# find /etc -size +20k -a -size -50k
/etc/lvm/lvm.conf
/etc/selinux/targeted/modules/active/modules/unconfineduser.pp
/etc/selinux/targeted/modules/active/modules/staff.pp
/etc/selinux/targeted/modules/active/modules/samba.pp
/etc/selinux/targeted/modules/active/modules/apache.pp
/etc/selinux/targeted/modules/active/modules/postfix.pp
/etc/selinux/targeted/modules/active/modules/xguest.pp
/etc/selinux/targeted/modules/active/modules/unprivuser.pp
/etc/makedev.d/01linux-2.6.x
/etc/mime.types
/etc/libreport/events/report_RHTSupport.xml
/etc/sysconfig/network-scripts/network-functions-ipv6
/etc/ld.so.cache
/etc/sound/events/gnome-2.soundlist
/etc/postfix/main.cf
/etc/vmware-tools/installer.sh
/etc/vmware-tools/services.sh
You have new mail in /var/spool/mail/root


find /etc -size +20k -a -size -50k -exec ls -lh {} \;

查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息

-exec/-ok命令{} \;对搜索结果执行操作

运行效果:

[root@localhost ~]# find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-rw-r--r--. 1 root root 34K 6月  22 2012 /etc/lvm/lvm.conf
-rw-------. 1 root root 28K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/unconfineduser.pp
-rw-------. 1 root root 42K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/staff.pp
-rw-------. 1 root root 24K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/samba.pp
-rw-------. 1 root root 26K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/apache.pp
-rw-------. 1 root root 29K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/postfix.pp
-rw-------. 1 root root 26K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/xguest.pp
-rw-------. 1 root root 36K 12月 28 07:48 /etc/selinux/targeted/modules/active/modules/unprivuser.pp
-rw-r--r--. 1 root root 28K 11月 11 2010 /etc/makedev.d/01linux-2.6.x
-rw-r--r--. 1 root root 43K 9月  23 2011 /etc/mime.types
-rw-r--r--. 1 root root 22K 6月  28 2012 /etc/libreport/events/report_RHTSupport.xml
-rw-r--r--. 1 root root 30K 4月  27 2012 /etc/sysconfig/network-scripts/network-functions-ipv6
-rw-r--r--. 1 root root 37K 12月 28 07:48 /etc/ld.so.cache
-rw-r--r--. 1 root root 27K 11月 12 2010 /etc/sound/events/gnome-2.soundlist
-rw-r--r--. 1 root root 27K 12月  3 2011 /etc/postfix/main.cf
-rwxr-xr-x. 1 root root 30K 12月 28 07:47 /etc/vmware-tools/installer.sh
-rwxr-xr-x. 1 root root 39K 12月 28 07:47 /etc/vmware-tools/services.sh

2、搜索字符串命令grep

grep [选项] 字符串 文件名

在文件当中匹配符合条件的字符串

运行效果:

[root@localhost ~]# grep "size" anaconda-ks.cfg 
#part /boot --fstype=ext4 --size=200
#part /home --fstype=ext4 --size=2000
#part swap --size=1000
#part / --fstype=ext4 --grow --size=200

选项:

-i 忽略大小写

运行效果:

[root@localhost ~]# grep -i "size" anaconda-ks.cfg 
#part /boot --fstype=ext4 --size=200
#part /home --fstype=ext4 --size=2000
#part swap --size=1000
#part / --fstype=ext4 --grow --size=200

-v 排除制定字符串

运行效果:

[root@localhost ~]# grep -v "size" anaconda-ks.cfg 
Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$iYfOQvs4D3NQXs87$fz549ygML.f5zHZJWJLEAnWsJ7gSiVenV.PTy/gFSm96XNzssW8CiFNuQk/0n9uugkwsxj1acNmQnhJB5xpnL1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none

repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@base
@chinese-support
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
pax
oddjob
sgpio
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
%end

3、find命令和grep命令的区别

find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。

grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。



你可能感兴趣的:(linux)