centos7文件的查找命令

文件的查找目前使用的主要有以下几个命令:

命令 说明
which 查看可执行文件的位置
whereis 查看可执行文件的位置及相关文件
locate 配合数据库缓存,快速查看文件位置
grep 过滤匹配,它是一个文件搜索工具
find 查找相关文件

1 which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@virtue ~]# which cd
/usr/bin/cd
[root@virtue ~]# type cd
cd 是 shell 内嵌
[root@virtue ~]# which squid
/usr/bin/which: no squid in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

*centos7中并没有出现内嵌命令无法查找的情况

2 whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令会查找一个记录系统内文件信息的数据库文件,所以速度会很快。缺点是数据库文件并不是实时更新,默认情况一星期更新一次,因此如果最近删除的文件或者创建的文件是有可能错误的显示的。为了防止这种情况,可以手动的强制更新数据库文件。

命令参数
-b   定位可执行文件。
-m   定位帮助文件。
-s   定位源代码文件。
-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B   指定搜索可执行文件的路径。
-M   指定搜索帮助文件的路径。
-S   指定搜索源代码文件的路径。
普通查找
[root@virtue ~]# whereis svn
svn:
[root@virtue ~]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
查找二进制文件
[root@virtue ~]# whereis -b git
git: /usr/bin/git
查找帮助文件
[root@virtue ~]# whereis -m git
git: /usr/share/man/man1/git.1.gz

3 locate

locate可以快速的找到文件的位置,因为locate查找的是数据库的文件来确定文件的位置,而并不是深入各个文件系统查找。一般情况下,数据库文件通过corntab自动更新,通常每天更新一次。

命令参数
命令 说明
-e 将排除在寻找的范围之外。
-1 如果是 1 则启动安全模式。无法查看权限不足的文件。该模式会降低速度,因为需要实际的去档案系统中获得权限资料。
-f 将特定的档案系统排除在外。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
普通查找

查找内容: /etc下说有以sh开头的文件

[root@virtue ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
手动更新数据库
[root@virtue ~]# updatedb 

4 grep

grep命令是用来过滤文件内容的命令,它能够使用正则表达式来搜索文本,并把结果打印出来

命令参数
命令 说明
v 取反
-i 忽略大小写
^# 以#开头
#$ 以#结尾
^$ 空行
-n 对过滤的内容加上行号
| 或者的意思
普通过滤
[root@virtue ~]# ps aux | grep sshd | grep -v grep
root      3175  0.0  0.0 145720  5364 ?        Ss   11:03   0:03 sshd: root@pts/0
root     24841  0.0  0.0 105872  4080 ?        Ss    2017   0:09 /usr/sbin/sshd -D
过滤内容添加行号
[root@virtue ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
多重条件过滤内容
[root@virtue ~]# grep "nologin\|root" /etc/passwd | wc -l
18
[root@virtue ~]# egrep "nologin|root" /etc/passwd | wc -l
18

5 find

Linux下find命令在目录结构中搜索文件,并执行指定的操作。即使系统中含有网络文件系统( NFS),只你具有相应的权限,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

命令参数
命令参数 说明
pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-print0 与xargs配套使用,以“\0”做为定界符。
-exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项
命令选项 说明
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-user 按照文件属主来查找文件。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-group 按照文件所属的组来查找文件。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-mtime -n/+n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
-type 查找某一类型的文件,诸如:b - 块设备文件/d - 目录/c - 字符设备文件/p - 管道文件/l - 符号链接文件/f - 普通文件
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-size n [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件时不跨越文件系统mount点。
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
关于访问时间的参数具体如下所示:
命令选项 说明
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
find命令应用实例
# 按名称查找
[root@virtue ~]# find . -name "*.asm"
./Python-3.6.1/Modules/_decimal/libmpdec/vcdiv64.asm
./Python-3.6.1/Modules/_ctypes/libffi_msvc/win64.asm
./hello.asm
# 按时间进行查找
[root@virtue log]# find . -mtime +100
./ppp
./audit
[root@virtue log]# find . -mtime -2
./lastlog
./wtmp
./audit/audit.log
./yum.log
./cron
./messages
./secure
# 按照权限查找
[root@virtue log]# find /root -perm 777
/root/Python-3.6.1/build/temp.linux-x86_64-3.6/libffi/include/ffitarget.h
/root/Python-3.6.1/build/temp.linux-x86_64-3.6/libffi/include/ffi_common.h
/root/.vim/bundle/sparkup/TextMate/Sparkup.tmbundle/Support/sparkup.py
/root/.vim/bundle/sparkup/ftplugin
/root/.vim/bundle/sparkup/vim/ftplugin/html/sparkup.py
/root/.vim/bundle/sparkup/vim/ftplugin/htmldjango
/root/.vim/bundle/sparkup/vim/ftplugin/smarty
/root/.vim/bundle/sparkup/vim/ftplugin/xml
# 按照用户/属组查找
[root@virtue tsa]# find . -user peter
./12.txt
./1.txt
./backup.sh
./sendmail.py
[root@virtue tsa]# find . -group peter
./12.txt
./1.txt
./backup.sh
./sendmail.py
[root@virtue tsa]# userdel -r peter 
[root@virtue tsa]# find . -nouser
./12.txt
./1.txt
./backup.sh
./sendmail.py
[root@virtue tsa]# find . -nogroup
./12.txt
./1.txt
./backup.sh
./sendmail.py
# 按照文件类型查找
[root@virtue tsa]# find . -type d 
.
./a12
./a39
[root@virtue tsa]# find . -type f
./12.txt
./1.txt
./backup.sh
./sendmail.py
./a12/12.txt
./a12/summary.md
./a39/detail.html
./a39/style.css
./a39/script.js
# 查找后指定命令
[root@virtue tsa]# find . -nogroup -ls
36783493    4 -rw-rw-r--   1 1001     1001           26 1月 11 16:27 ./12.txt
36783494    4 -rw-rw-r--   1 1001     1001            9 1月 11 16:26 ./1.txt
36783495    4 -rw-rw-r--   1 1001     1001           26 1月 11 16:26 ./backup.sh
36780031    0 -rw-rw-r--   1 1001     1001            0 1月 11 16:24 ./sendmail.py
[root@virtue tsa]# find . -nogroup -ls
36783493    4 -rw-rw-r--   1 1001     1001           26 1月 11 16:27 ./12.txt
36783494    4 -rw-rw-r--   1 1001     1001            9 1月 11 16:26 ./1.txt
36783495    4 -rw-rw-r--   1 1001     1001           26 1月 11 16:26 ./backup.sh
36780031    0 -rw-rw-r--   1 1001     1001            0 1月 11 16:24 ./sendmail.py
[root@virtue tsa]# find . -name "*.py" -delete
[root@virtue tsa]# ll
总用量 12
-rw-rw-r--. 1 1001 1001 26 1月  11 16:27 12.txt
-rw-rw-r--. 1 1001 1001  9 1月  11 16:26 1.txt
drwxr-xr-x. 2 root root 36 1月  11 16:34 a12
drwxr-xr-x. 2 root root 56 1月  11 16:35 a39
-rw-rw-r--. 1 1001 1001 26 1月  11 16:26 backup.sh
# 查找后exec完成指定操作
[root@virtue tsa]# find . -type f -exec ls -l {} \;
-rw-rw-r--. 1 1001 1001 26 1月  11 16:27 ./12.txt
-rw-rw-r--. 1 1001 1001 9 1月  11 16:26 ./1.txt
-rw-rw-r--. 1 1001 1001 26 1月  11 16:26 ./backup.sh
-rw-r--r--. 1 root root 0 1月  11 16:34 ./a12/12.txt
-rw-r--r--. 1 root root 0 1月  11 16:34 ./a12/summary.md
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/detail.html
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/style.css
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/script.js
# 使用exec删除查找到的文件(慎重:删除时并不会进行确认操作)
[root@virtue tsa]# find . -name "*.txt"  -exec rm {} \;
[root@virtue tsa]# find . -type f -exec ls -l {} \;
-rw-rw-r--. 1 1001 1001 26 1月  11 16:26 ./backup.sh
-rw-r--r--. 1 root root 0 1月  11 16:34 ./a12/summary.md
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/detail.html
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/style.css
-rw-r--r--. 1 root root 0 1月  11 16:35 ./a39/script.js
# 安全的删除方式
[root@virtue tsa]# find . -name "s*" 
./a12/summary.md
./a39/style.css
./a39/script.js
[root@virtue tsa]# find . -name "s*" -ok rm {} \; 
< rm ... ./a12/summary.md > ? y
< rm ... ./a39/style.css > ? y
< rm ... ./a39/script.js > ? 
[root@virtue tsa]# find . -name "s*" 
./a39/script.js
# 多次执行exec
[root@virtue tsa]# find /etc/ -name passwd -exec grep root {} \; -exec ls -l {} \;
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-rw-r--r--. 1 root root 1085 1月  11 16:33 /etc/passwd
find和xargs配合使用应用实例
# 普通的配合使用
[root@virtue tsa]# find . -name "*.txt" | xargs ls -l
-rw-r--r--. 1 root root 0 1月  12 16:01 ./a.txt
-rw-r--r--. 1 root root 0 1月  12 16:01 ./b.txt
-rw-r--r--. 1 root root 0 1月  12 16:01 ./c.txt
-rw-r--r--. 1 root root 0 1月  12 16:01 ./d.txt
-rw-r--r--. 1 root root 0 1月  12 16:01 ./e.txt
-rw-r--r--. 1 root root 0 1月  12 16:01 ./f.txt
# 配合使用打包
[root@virtue tsa]# find . -name "*.txt" -print0 | xargs -0 tar cf find.tar 
[root@virtue tsa]# tar tf find.tar 
./a.txt
./b.txt
./c.txt
./d.txt
./e.txt
./f.txt
find逻辑运算符
命令 说明
-a 并且
-o 或者
+ 超过
- 低于
# find运算符应用实例
[root@virtue tsa]# find . -name "a*" -a -type d 
./a12
./a39
[root@virtue tsa]# find /etc/ -size +20k -a -size -50k | wc -l
27
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容

  • which 查看可执行文件的位置 命令格式:which 可执行文件名称 命令功能:which指令会在PATH变量指...
    upupSue阅读 660评论 0 1
  • Linux下一切皆文件,但是文件由于文件的属性的不同,在查找上可以针对不同的文件做相应的查找以便加快查询速度和减少...
    常青藤成阅读 1,003评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,041评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 98,621评论 9 467
  • 愿是记忆中盲掉了的 模糊不清 像烟点上燃掉一半似的 凄清 高冷 不可捉摸的心思 落定 剩了清醒 徘徊在身体左右 假...
    杨念桥阅读 202评论 0 0