以此常用的授命竟然找不到啊

which (寻找『运行档』)

[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

 

分别用root与一般帐号搜寻 ifconfig 这些命令的完全档名

图片 1

[root@www ~]# which ifconfig
/sbin/ifconfig <==用 root 可以找到正确的运行档名喔!
[root@www ~]# su - vbird <==切换身份成为 vbird 去!
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
:/home/vbird/bin) <==见鬼了!竟然一般身份帐号找不到!
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,
# 不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的 
# PATH 中,找不到也是理所当然的啊!了乎?
[vbird@www ~]$ exit <==记得将身份切换回原本的 root

图片 2

 

用 which 去找寻 which 的档名称叫何?

[root@www ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot '
/usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!
# 更多的数据我们会在 bash 章节中再来谈的!

 

请寻觅 cd 那几个命令的完整档名

[root@www ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin
:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
# 瞎密?怎么可能没有 cd ,我明明就能够用 root 运行 cd 的啊!

那些命令是依据『PATH』那个情况变量所正式的路线,去探求『运维档』的档名~
所以,器重是寻找『运转档』而已!且 which
后面接的是『完整档名』喔!若加上 -a
选项,则能够列出全部的能够找到的同名运行档,而非仅展现第贰个而已!

最终一个表率最风趣,怎么 cd
那么些常用的指令竟然找不到啊!为何呢?那是因为 cd 是『bash 内建的授命』啦! 不过 which 暗中认可是找
PATH 内所专门的学业的目录,所以本来一定找不到的呀!那怎办?无妨!

 

Linxu命令与公事的检索 – which, whereis, locate, find

whereis (寻觅特定文件)

 

[root@www ~]# whereis [-bmsu] 文件或目录名
选项与参数:
-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

请用差别的地位寻觅 ifconfig 那个档名

图片 3

[root@www ~]# whereis ifconfig 
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~]# su - vbird <==切换身份成为 vbird
[vbird@www ~]$ whereis ifconfig <==找到同样的结果喔!
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[vbird@www ~]$ exit <==回归身份成为 root 去!
# 注意看,明明 which 一般使用者找不到的 ifconfig 却可以让 whereis 找到!
# 这是因为系统真的有 ifconfig 这个『文件』,但是使用者的 PATH 并没有加入 /sbin
# 所以,未来你找不到某些命令时,先用文件搜寻命令找找看再说!

图片 4

 

只找寻跟 passwd 有关的『表达文件』档名(man page)

[root@www ~]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

 

等一下大家会涉嫌 find 那些搜寻命令, find
是很有力的物色命令,但时间花用的不小! (因为 find
是间接找寻硬盘,为假若您的硬盘相比较老旧的话,嘿嘿!有的等!) 这一年whereis 就一定的好用了!此外, whereis 能够投入选项来寻找相关的数码,
举例一旦你是要找可运营档( binary )那么丰富 -b 就能够啊!
若是不加任何选择的话,那么就将享有的数据列出来罗!

这正是说 whereis 到底是应用什么咚咚呢?为什么搜寻的速度会比 find 快这么多?
其实那也未有啥!那是因为 Linux
系统会将系统内的有所文件都记录在八个数据库文件之中, 而当使用 whereis
只怕是下边要说的 locate 时,都会以此数据库文件的开始和结果为准,
由此,有的时后您还大概会意识使用那七个运转档时,会找到已经被杀掉的文书!
何况也找不到新型的恰恰创立的文本呢!这正是因为那七个指令是由数据库个中的结果去追寻文件的所在啊!
更加多与那些数据库有关的证实,请参考下列的 locate 命令。

 

which (寻找『运行档』)

[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名
[root@www ~]# which ifconfig
/sbin/ifconfig            <==用 root 可以找到正确的运行档名喔!
[root@www ~]# su - vbird <==切换身份成为 vbird 去!
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
:/home/vbird/bin)         <==见鬼了!竟然一般身份帐号找不到!
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,
# 不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的 
# PATH 中,找不到也是理所当然的啊!
[vbird@www ~]$ exit      <==记得将身份切换回原本的 root

范例二:用 which 去找出 which 的档名为何?
[root@www ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot '
        /usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!

范例三:请找出 cd 这个命令的完整档名
[root@www ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin
:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
# 什么?怎么可能没有 cd ,我明明就能够用 root 运行 cd 的啊!

locate

[root@www ~]# locate [-ir] keyword
选项与参数:
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

 

寻找连串中负有与 passwd 相关的档名

[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....

那几个 locate
的运用更简便易行,直接在背后输入『文件的一对名称』后,就可以拿走结果。
举上边的例子来讲,小编输入 locate passwd ,那么在全体档名 (富含路线名称)
其中,只要有 passwd 在中间,
就能被显示出来的!这也是个很便宜好用的通令,借使您忘掉有个别文件的总体档名时~~

可是,那几个事物如故有采用上的限定呦!为啥呢?你会意识使用 locate
来查找数据的时候极度的快, 那是因为 locate 搜索的数据是由『已创制的数据库 /var/lib/mlocate/』
里面包车型大巴数目所搜寻到的,所以不要直接在去硬盘当中存取数据,呵呵!当然是异常的红速罗!

那正是说有何样范围呢?正是因为她是路过数据库来搜索的,而数据库的创设暗中同意是在天天运营壹遍(各种 distribution 都不如,CentOS 5.x
是天天晋级数据库一遍!),所以当您新创制起来的文件,
却还在数据库进级从前搜寻该公文,那么 locate
会告诉您『找不到!』呵呵!因为必得求升迁数据库呀!

这是或不是手动进级数据库哪?当然能够啊!晋级 locate
数据库的办法特别轻松,直接输入『 updatedb 』就足以了! updatedb 命令会去读取 /etc/updatedb.conf
这几个配置档的布局,然后再去硬盘里面实行查找档名的动作,
最后就晋级总体数据库文件罗!因为 updatedb 会去找出硬盘,所以当你运行updatedb 时,恐怕会等待数分钟的年月喔!

  • updatedb:遵照 /etc/updatedb.conf
    的配备去搜索系统硬盘内的档名,并晋级 /var/lib/mlocate
    内的数据库文件;
  • locate:依附 /var/lib/mlocate
    内的数据库记载,寻觅使用者输入的要害字档名。

 

whereis (寻觅特定文件)

[root@www ~]# whereis [-bmsu] 文件或目录名
选项与参数:
-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

范例一:请用不同的身份找出 ifconfig 这个档名
[root@www ~]# whereis ifconfig 
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~]# su - vbird        <==切换身份成为 vbird
[vbird@www ~]$ whereis ifconfig <==找到同样的结果喔!
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[vbird@www ~]$ exit              <==回归身份成为 root 去!
# 注意看,明明 which 一般使用者找不到的 ifconfig 却可以让 whereis 找到!
# 这是因为系统真的有 ifconfig 这个『文件』,但是使用者的 PATH 并没有加入 /sbin
# 所以,未来你找不到某些命令时,先用文件搜寻命令找找看再说!

范例二:只找出跟 passwd 有关的『说明文件』档名(man page)
[root@www ~]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

        等一下我们会涉及 find 那个搜寻命令, find
是很强劲的研究命令,但日子花用的相当的大! (因为 find
是间接搜索硬盘,为固然您的硬盘相比老旧的话,嘿嘿!有的等!) 那一年whereis 就卓越的好用了!另外, whereis 能够参加选项来找出相关的数量,
比如一旦你是要找可运转档( binary )那么充分 -b 就足以啊!
假如不加任何选用的话,那么就将享有的数据列出来罗!

       那么 whereis 到底是选择什么咚咚呢?为什么搜寻的进度会比 find
快这么多? 其实那也尚未怎么!那是因为 Linux
系统会将系统内的装有文件都记录在一个数据库文件之中, 而当使用 whereis
或许是底下要说的 locate 时,都会以此数据库文件的剧情为准,
因而,有的时后您还大概会意识使用这七个运行档时,会找到已经被杀掉的公文!
何况也找不到新型的刚巧创设的文件呢!那就是因为那四个指令是由数据库在那之中的结果去探寻文件的八方啊!
越多与这几个数据库有关的认证,请参照他事他说加以考察下列的 locate 命令。

find

 

图片 5

[root@www ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
   -mtime  n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
   -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
   -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
   -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名

图片 6

 

将过去系统方面 24 时辰内有转移过内容 (mtime) 的公文列出

[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!

 

探求 /etc 底下的文本,即便文件日期比 /etc/passwd 新就列出

[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!

时刻参数真是挺有意思的!我们今后知道 atime, ctime 与 mtime
的意义,假使您想要寻找一天内被退换过的文件名称,
能够运用上述典范一的作法。但倘使自个儿想要寻找『4天内被改成过的文本档名』呢?那能够动用『 find /var -mtime
-4』。那如假使『4天前的那一天』就用『 find
/var -mtime 4 』。有未有丰盛『+,
-』差距一点都不小喔!我们得以用轻松的图示来验证一下:

图片 7
find 相关的时刻参数意义

图中最左边为当前的时光,越往左侧则表示越早此前的年华轴啦。由图大家得以精通的知情:

图中最侧面为当下的小时,越往左侧则象征越早在此以前的时间轴啦。由图5.2.1大家得以清楚的掌握:

  • +4表示大於等於5天前的档名:ex> find /var -mtime +4
  • -4意味着小於等於4天内的公文书档案名:ex> find /var -mtime -4
  • 4则是象征4-5那一天的公文书档案名:ex> find /var -mtime 4

  • +4表示大於等於5天前的档名:ex> find /var -mtime +4
  • -4意味着小於等於4天内的文书档名:ex> find /var -mtime -4
  • 4则是象征4-5那一天的文书档名:ex> find /var -mtime 4

老大风趣吧!你能够在 /var/
目录下搜寻一下,感受一下输出文件的差别喔!再来看看其余 find 的用法吧!

图片 8

选项与参数:
2. 与使用者或群组名称有关的参数:
   -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
            /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
   -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
            /etc/group,相关的介绍我们会第四篇说明~
   -user name :name 为使用者帐号名称喔!例如 dmtsai 
   -group name:name 为群组名称喔,例如 users ;
   -nouser    :寻找文件的拥有者不存在 /etc/passwd 的人!
   -nogroup   :寻找文件的拥有群组不存在於 /etc/group 的文件!
                当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
                这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

图片 9

 

搜索 /home 底下属於 vbird 的文书

[root@www ~]# find /home -user vbird
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,
# 就可以利用这个命令将属於某个使用者的所有文件都找出来喔!

 

搜索系统中不属於任何人的公文

[root@www ~]# find / -nouser
# 透过这个命令,可以轻易的就找出那些不太正常的文件。
# 如果有找到不属於系统任何人的文件时,不要太紧张,
# 那有时候是正常的~尤其是你曾经以原始码自行编译软件时。

即使您想要寻觅某些使用者在系统底下成立了吗咚咚,使用上述的选料与参数,就可见找寻来啊!
至於那多少个 -nouser 或 -nogroup
的选项职能中,除了你活动由网络方面下载文件时会产生之外,
假诺你将系统内部有个别帐号删除了,不过该帐号已经在系统内创设比相当多文书时,就恐怕会产生无主孤魂的文件存在!
此时您就得利用这几个 -nouser 来寻找该项指标文本罗!

图片 10

选项与参数:
3. 与文件权限及名称有关的参数:
   -name filename:搜寻文件名称为 filename 的文件;
   -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
                   还要大的文件,就是『 -size +50k 』
   -type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),
                   装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), 
                   及 FIFO (p) 等属性。
   -perm mode  :搜寻文件权限『刚好等於』 mode 的文件,这个 mode 为类似 chmod
                 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
   -perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,
                 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
                 当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
                 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
   -perm +mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻
                 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------
                 也会被列出来,因为他有 -rw.... 的属性存在!

图片 11

 

寻找档名称为 passwd 那一个文件

[root@www ~]# find / -name passwd
# 利用这个 -name 可以搜寻档名啊!

 

寻觅 /var 目录下,文件类型为 Socket 的档名有怎么着?

[root@www ~]# find /var -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /var -type p 或 -type s 来找!

 

招来文件当中蕴涵 SGID 或 SUID 或 SBIT 的属性

[root@www ~]# find / -perm +7000 
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,
# 所以当然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三个权限,
# 因此,就是 +7000 ~了乎?

 

上述范例中相比有意思的就属 -perm
那些选项啦!他的最首要在找寻奇怪权限的公文罗! 大家清楚 SUID 与 SGID
都得以配备在二进位程序上,即使本身想要找寻来 /bin, /sbin 那多少个目录下,
只要持有 SUID 或 SGID 就列出来该文件,你能够这么做:

[root@www ~]# find /bin /sbin -perm +6000

 

因为 SUID 是 4 分,SGID 2 分,总共为 6 分,因而可用 +四千来拍卖这一个权力! 至於 find 前边能够接三个目录来开展检索!其它, find 本来就能够寻觅次目录,那本特性也要特别注意喔!
最终,我们再来看一下 find 还会有哪些特殊成效吗!

选项与参数:
4. 额外可进行的动作:
-exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到
的结果。
-print :将结果列印到萤幕上,这个动作是默认动作!

 

将上个轨范找到的文本使用 ls -l 列出来~

[root@www ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的命令,命令不支持命令别名,
# 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!

 

寻觅种类中,大於 1MB 的文书

[root@www ~]# find / -size +1000k
# 虽然在 man page 提到可以使用 M 与 G 分别代表 MB 与 GB,
# 不过,俺却试不出来这个功能~所以,目前应该是仅支持到 c 与 k 吧!

find
的独特功能就是能力所能达到实行额外的动作(action)。大家将圭表八的事例以图解来评释如下:

图片 12
图5.2.2、find 相关的附加动作

该表率中国和北美洲常规的地点有 {} 以及 \; 还可能有 -exec
那些首要字,那一个东西的意义为:

  • {} 代表的是『由 find 找到的剧情』,如上海教室所示,find 的结果会被停放到
    {} 地点中;
  • -exec 一直到 \; 是最重要字,代表 find 额外动作的先导 (-exec) 到竣工(\;) ,在那中间的正是 find 命令内的附加动作。 在本例中正是『 ls -l
    {} 』罗!
  • 因为『 ; 』在 bash 境遇下是有异样意义的,因而利用反斜线来跳脱。

经过图 5.2.2 你应当就比较便于精晓 -exec 到 \; 之间的意思了吗!

万一您要找的文本是具备独特属性的,比方 SUID 、文件具备者、文件大小等等,
那么利用 locate 是从未办法完成你的搜寻的!此时 find 就显的很首要呀!
其它,find 还可以够动用万用字节来寻找档名呢!比方来讲,你想要搜索 /etc
底下档名满含 httpd 的文件, 那么你就能够如此做:

[root@www ~]# find /etc -name '*httpd*'

不仅能够钦命搜寻的目录(连同次目录),并且能够使用额外的选项与参数来找到最科学的档名!真是了不起用!
可是由於 find 在索求数据的时后一定的操硬盘!所以没工作并非使用 find
啦!有更棒的授命能够替代呦!那正是地点提到的 whereis 与 locate罗!

locate

[root@www ~]# locate [-ir] keyword
选项与参数:
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

范例一:找出系统中所有与 passwd 相关的档名
[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....

        那几个 locate
的施用更轻易,直接在末端输入『文件的一部分名称』后,就能够获得结果。
举下面包车型地铁事例来讲,小编输入 locate passwd ,那么在整机档名 (满含路线名称)
个中,只要有 passwd 在里头,
就能够被出示出来的!那也是个很有利好用的授命,假诺您忘掉有些文件的欧洲经济共同体档名时~~

        不过,那几个事物依然有选取上的范围呦!为啥吗?你会发掘使用
locate 来研究数据的时候非常的快, 这是因为 locate
找出的数目是由『已创建的数据库 /var/lib/mlocate/』
里面包车型客车数码所搜寻到的,所以并非直接在去硬盘个中存取数据,呵呵!当然是很急速罗!

       
那么有哪些范围呢?正是因为她是路过数据库来找寻的,而数据库的创造私下认可是在每一日运维一次(各种 distribution
都不及,CentOS 5.x
是每一日晋级数据库一次!),所以当你新创设起来的文本,
却还在数据库进级在此以前搜寻该公文,那么 locate
会告诉你『找不到!』呵呵!因为必须求晋级数据库呀!

        那是否手动进级数据库哪?当然能够啊!升级 locate
数据库的点子极其简单,直接输入『 updatedb 』就能够了! updatedb
命令会去读取 /etc/updatedb.conf
这几个配置档的布署,然后再去硬盘里面实行寻找档名的动作,
最终就晋级总体数据库文件罗!因为 updatedb 会去探索硬盘,所以当您运营updatedb 时,大概会等待数分钟的小时!

    updatedb:依据 /etc/updatedb.conf
的配置去探究系统硬盘内的档名,并进步 /var/lib/mlocate 内的数据库文件;
    locate:依据 /var/lib/mlocate
内的数据库记载,找寻使用者输入的重要字档名。

find

[root@www ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
   -mtime  n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
   -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
   -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
   -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名

范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!

范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!

假如自身想要寻觅『4天内被更动过的文件档名』呢?那能够应用『 find /var
-mtime -4 』。那如如果『4天前的那一天』就用『 find /var -mtime 4
』。有没有增添『+, -』差距比相当的大喔!大家能够用轻松的图示来证实一下:

图片 13

图中最右侧为当前的日子,越往右边则表示越早在此之前的光阴轴啦。由图5.2.1我们得以掌握的接头:

+4表示大於等於5天前的档名:ex> find /var -mtime +4
-4意味着小於等於4天内的公文档名:ex> find /var -mtime -4
4则是代表4-5那一天的文本档名:ex> find /var -mtime 4

选项与参数:
2. 与使用者或群组名称有关的参数:
   -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
            /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
   -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
            /etc/group,相关的介绍我们会第四篇说明~
   -user name :name 为使用者帐号名称喔!例如 dmtsai 
   -group name:name 为群组名称喔,例如 users ;
   -nouser    :寻找文件的拥有者不存在 /etc/passwd 的人!
   -nogroup   :寻找文件的拥有群组不存在於 /etc/group 的文件!
                当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
                这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

范例三:搜寻 /home 底下属於 vbird 的文件
[root@www ~]# find /home -user vbird
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,
# 就可以利用这个命令将属於某个使用者的所有文件都找出来喔!

范例四:搜寻系统中不属於任何人的文件
[root@www ~]# find / -nouser
# 透过这个命令,可以轻易的就找出那些不太正常的文件。
# 如果有找到不属於系统任何人的文件时,不要太紧张,
# 那有时候是正常的~尤其是你曾经以原始码自行编译软件时。

选项与参数:
3. 与文件权限及名称有关的参数:
   -name filename:搜寻文件名称为 filename 的文件;
   -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
                   还要大的文件,就是『 -size +50k 』
   -type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),
                   装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), 
                   及 FIFO (p) 等属性。
   -perm mode  :搜寻文件权限『刚好等於』 mode 的文件,这个 mode 为类似 chmod
                 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
   -perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,
                 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
                 当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
                 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
   -perm +mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻
                 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------
                 也会被列出来,因为他有 -rw.... 的属性存在!

范例五:找出档名为 passwd 这个文件
[root@www ~]# find / -name passwd
# 利用这个 -name 可以搜寻档名啊!

范例六:找出 /var 目录下,文件类型为 Socket 的档名有哪些?
[root@www ~]# find /var -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /var -type p 或 -type s 来找!

范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性
[root@www ~]# find / -perm +7000 
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,
# 所以当然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三个权限,
# 因此,就是 +7000 ~

选项与参数:
4. 额外可进行的动作:
   -exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到
                   的结果。
   -print        :将结果列印到萤幕上,这个动作是默认动作!

范例八:将上个范例找到的文件使用 ls -l 列出来~
[root@www ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的命令,命令不支持命令别名,
# 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!

范例九:找出系统中,大於 1MB 的文件
[root@www ~]# find / -size +1000k
# 虽然在 man page 提到可以使用 M 与 G 分别代表 MB 与 GB,
# 不过,却试不出来这个功能~所以,目前应该是仅支持到 c 与 k 吧!

图片 14

该楷模中国和南美洲常的地方有 {} 以及 \; 还会有 -exec
这些入眼字,这个东西的意思为:

{} 代表的是『由 find 找到的从头到尾的经过』,如上海教室所示,find 的结果会被停放到 {}
地点中;
-exec 一直到 \; 是珍视字,代表 find 额外动作的起来 (-exec) 到甘休 (\;)
,在那当中的就是 find 命令内的额外动作。 在本例中正是『 ls -l {}
』罗!
因为『 ; 』在 bash 遇到下是有非常含义的,由此选取反斜线来跳脱。

本文长久更新链接地址http://www.linuxidc.com/Linux/2015-08/120980.htm

图片 15