28 查找和放置系统文件

find

find 命令用于在一个或多个目录树中查找文件,搜索条件包括名称、时间戳或大小等。
find 命令使用所有或部分名称,或者使用其他搜索条件(比如大小、类型、文件所有者、创建日期或最后访问日期)来搜索文件或目录。最基本的 find 格式是按名称或名称的一部分来搜索。

ian@Z61t-u14:~/lpi103-2$ find . -name "*[1k]*"
./text10
./f1a
./backup
./backup/text1.bkp.2
./backup/text1.bkp.1
./f1
./text1

按类型查找文件

ian@Z61t-u14:~/lpi103-2$ find . -type d
../backup
ian@Z61t-u14:~/lpi103-2$ find . -type d -name "*"
../backup

安装文件大小搜索

您还可以按文件大小进行搜索,搜索特定大小的文件 (n) 或大于 (+n) 或小于给定值 (-n) 的文件。通过使用大小上限和下限,可以找到大小在给定范围内的文件。默认情况下,find 的 -size 选项会假设单位 “b” 表示 512 字节的数据块。在其他选择中,指定 “c” 表示字节,或者指定 “k” 表示 kb。

ian@Z61t-u14:~/lpi103-2$ find . -size 0
./f1a./f2
ian@Z61t-u14:~/lpi103-2$ find . -size -26c -size +23c -print
./text2
./text5
./backup/text1.bkp.2
./backup/text1.bkp.1
./text1

which、type 和 whereis 命令

which 命令

可以使用 which 命令搜索您的路径,找到在您键入一个命令时将执行哪个命令(如果有)。

[ian@atticf22 ~]$ echo $PATH
 /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ian/.local/bin:/home/ian/bin 
 [ian@atticf22 ~]$ which hello
 /usr/bin/which: no hello in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin: 
 /home/ian/.local/bin:/home/ian/bin) 
 [ian@atticf22 ~]$ export PATH=~/test-hello:$PATH
 [ian@atticf22 ~]$ echo $PATH
 /home/ian/test-hello:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin: 
 /home/ian/.local/bin:/home/ian/bin 
 [ian@atticf22 ~]$ which hello
 ~/test-hello/hello

which 命令显示了一个命令在您的路径中第一次出现的位置。如果您想知道该命令是否出现了多次,可以添加 -a 选项,例如:

[ian@atticf22 ~]$ which awk
 /usr/bin/awk 
 [ian@atticf22 ~]$ which -a awk
 /usr/bin/awk 
 /bin/awk
 [ian@atticf22 ~]$ ls -l $(which -a awk)
 lrwxrwxrwx. 1 root root 4 Jan  2  2015 /bin/awk -> gawk 
 lrwxrwxrwx. 1 root root 4 Jan  2  2015 /usr/bin/awk -> gawk 
 [ian@atticf22 ~]$ ls -ld /bin /usr/bin
 lrwxrwxrwx. 1 root root     7 Aug 16  2014 /bin -> usr/bin 
 dr-xr-xr-x. 2 root root 69632 Aug 10 10:40 /usr/bin

find 命令

find 命令就像是 Linux 系统上的文件搜索工具的瑞士军刀。您可能发现有用的另外两个功能是:它可以基于用户或组名称来查找文件,或者基于权限来查找文件。

 [root@atticf22 ~]# find /tmp -user ian 
 /tmp/jna-104022 
 ... 
 /tmp/hsperfdata_ian 
 /tmp/hsperfdata_ian/2390 
 /tmp/tracker-extract-files.1000 
 /tmp/.esd-1000 
 /tmp/.esd-1000/socket 
 /tmp/.X11-unix/X0 
 /tmp/.ICE-unix/1668

您还可以使用 -group 测试来按组查找文件。您可以使用 -nouser 和 -nogroup 选项找到不属于系统上的任何用户或组的文件。与其他测试一样,您可以使用 ! 对该测试求反。

[ian@atticf22 ~]$ find -L research -maxdepth 2 -type d ! -group ian
 research/rh62/involution 
 research/rh62/programs 
 research/lost+found 
 find: ‘ research/lost+found ’ : Permission denied 
 [ian@atticf22 ~]$ ls -ld research/rh62/involution
 drwxr-xr-x. 2 500 adm 4096 Nov 10  1999 research/rh62/involution

按照权限查找文件

要按权限查找文件,可以使用 -perm 测试和类似 chmod 或 umask 命令所使用的符号表达式。您可以搜索准确的权限,但更有用的做法通常是在权限表达式前添加一个连字符作为前缀,以表明您想要设置了这些权限的文件,但并不关心其他权限。下面演示了如何查找用户、组和每个人可执行的文件,以及查找其他用户无法读取的文件的两种不同方式。

 [ian@atticf22 ~]$ find . -maxdepth 1 -type f -perm -uga=x
 ./hello 
 [ian@atticf22 ~]$ find . -maxdepth 1 ! -perm  -o=r
 . 
 ./.ssh 
 ./.ICEauthority 
 ./.bash_history 
 ./.config 
 ... 
 ./.kde 
 ./.cache 
 [ian@atticf22 ~]$ find . -maxdepth 1 ! -perm  -0004
 . 
 ./.ssh 
 ./.ICEauthority 
 ./.bash_history 
 ./.config 
 ... 
 ./.kde 
 ./.cache

find 使用正则表达式

 [ian@atticf22 ~]$ cd /usr/include
 [ian@atticf22 include]$ find . -iregex ".*packet.*"
 ./net/if_packet.h 
 ./linux/packet_diag.h 
 ./linux/if_packet.h 
 ./netpacket 
 ./netpacket/packet.h 
 [ian@atticf22 include]$ find . -iregex ".*packet.*" ! -type d -size +1500c
 ./linux/packet_diag.h 
 ./linux/if_packet.h 
 ./netpacket/packet.h

locate 和 updatedb 命令

在每次运行 find 命令时,该命令都会搜索您指定的所有目录。要加快运行速度,可以使用另一个命令 locate,它使用已存储路径信息的数据库,而不是每次都搜索文件系统。

locate 命令

locate 命令搜索通常由一个计划作业每天更新的数据库中的匹配文件。
locate 命令与路径名的任何部分匹配,而不只是与文件名匹配。将文件名放在单引号中,包含至少一个通配符来更准确地匹配。下例展示了如何查找包含字符串 bin/ls 的路径,还展示了两个使用通配符来限制输出的示例。

[ian@attic4-cent ~]$ locate /bin/ls
 /bin/ls 
 /bin/lsblk 
 /bin/lscgroup 
 /bin/lssubsys 
 /usr/bin/lsattr 
 /usr/bin/lsb_release 
 /usr/bin/lscpu 
 /usr/bin/lsdiff 
 /usr/bin/lshal 
 /usr/bin/lslogins 
 /usr/bin/lsusb 
 /usr/bin/lsusb.py 
 [ian@attic4-cent ~]$ locate '\/bin/ls'
 /bin/ls 
 [ian@attic4-cent ~]$ locate '/bin/ls*'
 /bin/ls 
 /bin/lsblk 
 /bin/lscgroup 
 /bin/lssubsys

updatedb 命令

locate 使用的默认数据库存储在 /var 文件系统中的一个位置中,比如 /var/lib/locatedb。这个位置在使用 slocate 或 mlocate 包来提供额外的安全性或更高速度的系统上可能不同。您可以使用 locate -S 查找您的 locate 数据库上的统计数据。

 [ian@attic4-cent ~]$ locate -S
 Database /var/lib/mlocate/mlocate.db: 
     77,143 directories 
     776,460 files 
     56,872,710 bytes in file names 
     21,074,461 bytes used to store datab

使用 updatedb 命令创建或更新该数据库。该命令通常作为计划作业每天运行。文件 /etc/updatedb.conf(或者有时候是/etc/sysconfig/locate)是 updatedb 的配置文件。要启用每日更新,root 用户需要编辑 /etc/updatedb.conf 并设置 DAILY_UPDATE=yes。要立即创建该数据库,可以 root 身份运行 updatedb 命令。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容