linux 学习笔记4 find

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 学习笔记4 find相关的知识,希望对你有一定的参考价值。


find

-type 

文件类型:常用f普通文件,d目录文件,

-name   

最常用的选项,要么单独使用该选项,要么和其他选项一起使用。可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.log的文件,使用~作为 ‘pathname‘参数,波浪号~代表了你的$HOME目录。

find ~ -name "*.log" -print  

[[email protected] ~]$ find ~ -name *.log 

/home/srd/.imsettings.log

/home/srd/.local/share/gvfs-metadata/computer:-a70bf00a.log

/home/srd/.local/share/gvfs-metadata/label-CentOS_6.4_Final-10158b6b.log

/home/srd/.local/share/gvfs-metadata/home-b5544f17.log

/home/srd/cc/Python-3.5.0/build/temp.linux-x86_64-3.5/libffi/config.log

/home/srd/cc/Python-3.5.0/config.log

/home/srd/cc/redis-3.0.5/deps/jemalloc/config.log

 

想要在当前目录及子目录中查找所有的‘ *.log‘文件,可以用:find . -name "*.log" -print  

[[email protected] ~]$ find . -name *.log 

./.imsettings.log

./.local/share/gvfs-metadata/computer:-a70bf00a.log

./.local/share/gvfs-metadata/label-CentOS_6.4_Final-10158b6b.log

./.local/share/gvfs-metadata/home-b5544f17.log

./cc/Python-3.5.0/build/temp.linux-x86_64-3.5/libffi/config.log

./cc/Python-3.5.0/config.log

./cc/redis-3.0.5/deps/jemalloc/config.log


perm按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。  

如在当前目录下查找文件权限位为777的文件,即文件属主可以读、写、执行,其他用户可以读、写、执行的文件,可以用:  

[[email protected] ~]$ find . -perm 777

./.pulse/eae9e860c9ec8073634e4ecc0000003f-runtime

./cc/Python-3.5.0/build/temp.linux-x86_64-3.5/libffi/include/ffitarget.h

./cc/Python-3.5.0/build/temp.linux-x86_64-3.5/libffi/include/ffi_common.h

[[email protected] ~]$ 


user和nouser选项:按文件属主查找文件,使用group和nogroup选项用法一样

实例1:在根目录中查找文件属主为123的文件 

[[email protected] /]# find / -user 123

/usr/123

/usr/123/.gnome2

/usr/123/.bashrc

/usr/123/.mozilla

/usr/123/.mozilla/extensions

/usr/123/.mozilla/plugins

/usr/123/.bash_profile

/usr/123/.bash_logout

 

实例3:为了查找属主帐户已经被删除的文件,可以使用-nouser选项。在/home目录下查找所有的这类文件

[[email protected] /]# find / -nouser  

这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。


-mtime 按照更改时间或访问时间等查找文件:如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。  用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。希望在系统根目录下查找更改时间在5日以内的文件,可以用:

[[email protected] /]# find / -mtime +9 9天以前的文件



[[email protected] /]# find / -mtime -5 5天以内的文件


[[email protected] /]# find / -name passwd -print  查找跟目录下passwd文件,并打印在终端(print可以省略)

/etc/pam.d/passwd

/etc/passwd

/usr/bin/passwd

/selinux/class/passwd

/selinux/class/passwd/perms/passwd



[[email protected] /]# find /var/log -type f -mtime +5  查找/var/log 最后修改日期是5天以前的  

/var/log/maillog-20160124

/var/log/messages-20160103

/var/log/dracut.log-20160101

/var/log/maillog-20160110

/var/log/yum.log

/var/log/maillog-20160103

/var/log/mysqld.log

/var/log/anaconda.program.log

/var/log/spooler-20160124

/var/log/secure-20160110

/var/log/secure-20160103

/var/log/cron-20160117

/var/log/pm-powersave.log

/var/log/Xorg.9.log

/var/log/anaconda.log

/var/log/wpa_supplicant.log



[[email protected] /]# find /var/log -type f -mtime +5 -exec chown -R srd:srd {} \;

            查找/var/log 最后修改日期是5天以前的 ,并将文件所有者改成srd:srd

[[email protected] /]# cd var/log

[[email protected] log]# ll

total 1704

-rw-------. 1 srd  srd    2368 Dec 31 14:04 anaconda.ifcfg.log

-rw-------. 1 srd  srd   20626 Dec 31 14:04 anaconda.log

-rw-------. 1 srd  srd   44877 Dec 31 14:04 anaconda.program.log

-rw-------. 1 srd  srd  115558 Dec 31 14:04 anaconda.storage.log

-rw-------. 1 srd  srd   50364 Dec 31 14:04 anaconda.syslog

-rw-------. 1 srd  srd   60867 Dec 31 14:04 anaconda.xlog

-rw-------. 1 srd  srd  115227 Dec 31 14:04 anaconda.yum.log

drwxr-x---. 2 root root   4096 Jun 22  2012 audit

-rw-r--r--. 1 srd  srd    2546 Dec 31 14:10 boot.log


[[email protected] /]# find /etc/services  -type f -print | xargs grep "passwd"

在/etc/services 下面找passwd文件,并显示

将find指令输出信息传递给xargs,xargs分批次处理

kpasswd         464/tcp         kpwd            # Kerberos "passwd"

kpasswd         464/udp         kpwd            # Kerberos "passwd"

passwd_server   752/udp         qrh             # Kerberos passwd server

rpasswd         774/tcp                 #

[[email protected] /]# 

不用print也是一样的作用

[[email protected] /]# find /etc/services  -type f | xargs grep "passwd"

kpasswd         464/tcp         kpwd            # Kerberos "passwd"

kpasswd         464/udp         kpwd            # Kerberos "passwd"

passwd_server   752/udp         qrh             # Kerberos passwd server

rpasswd         774/tcp  




以上是关于linux 学习笔记4 find的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记4_基本文件操作命令复习2

linux 学习笔记—

linux学习笔记16--命令find

Linux学习笔记——find命令

Linux中find命令学习笔记

我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?