文档章节

shell端查找和搜索:which, whereis, locate, find and grep

ancient_wind
 ancient_wind
发布于 2015/04/28 15:00
字数 756
阅读 27
收藏 0

简单总结一下shell常用的文件查找和内容搜索工具.

which

可以查找执行文件的路径,例如:

-bash-4.3$ which ifconfig
/sbin/ifconfig
-bash-4.3$ which ls
alias ls='ls --color=auto'
        /bin/ls

whereis and locate

用于文件名的查找。find命令相对较慢,这两个命令利用数据库(Linux系统会将所有的文件记录在一个数据库文件里面)来查找数据,相当快速,找不到时再用find。

whereis 查找特定文件,例如:

-bash-4.3$ whereis profile
profile: /etc/profile.d /etc/profile /usr/include/profile.h
-bash-4.3$ whereis vimrc
vimrc: /etc/vimrc

locate可以通过文件的部分名称来查找,命令示例如:

locate [-ir] keywork  # i:ignore ; r: regular

-bash-4.3$ locate vimrc
/etc/vimrc
/etc/libreport/events/collect_vimrc_system.xml
/etc/libreport/events/collect_vimrc_user.xml
/etc/libreport/events.d/vimrc_event.conf

-bash-4.3$ locate ifconfig
/sbin/ifconfig
/usr/libexec/hypervkvpd/hv_set_ifconfig
/usr/sbin/pifconfig

locate查找的是已创建的数据库:/var/lib/mlocate,此数据库默认每天创建一次,可以用“updatedb”手动更新。

find

速度较慢但是功能强大。下面分几个不同的功能来介绍此命令:

命令格式: 

find [PATH] [option] [action]

1. 时间参数

-mtime n: n天之前的“一天之内”改过的文件
-mtime +n: n天之前改过的文件
-mtime -n: n天之内改过的文件

-newer file: 与已存在的file相比还要新的文件,比较新旧文件时有用

2. 用户和用户组

-uid n: n = UID, records in /etc/passwd
-gid n: n = GID, records in /etc/group
-user name
-group name
-nouser: find file belongs to none of user in /etc/passwd
-nogroup

-bash-4.3$ find temp/ -user ancient_wind
temp/
temp/predixDoc.tar
temp/newfile
temp/newfile2

3. 文件权限及名称

-name filename: filename可以用通配符
-size [+-]SIZE: for SIZE, c=byte, k=1024bytes
-type TYPE: f=file, d=folder, b/c=device, l=link, s=socket, p=FIFO
-perm [+-]mode: mode is like the value of chmod, perm=permission

4. 其他功能

find的特殊功能是能够进行额外的动作(action)

-exec command
-print: this is a default action

-bash-4.3$ find / -perm +7000 -exec ls -l {} \;
此例中,find的结果放到{}中,\转义符,位于-exec到;之间的就是action。

grep

grep是一个更加强大的文件/内容搜索工具,常配合管道使用。基本语法如下:

[root@www ~]# grep [-acinv] [--color=auto] “keywords” filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

搜索关键字可使用正则表达式。

常用示例

1. 目录下搜素文件名包含某字符的文件
find ~/tmp -name "[Ss]hell*"

2. 搜素子目录下包含特定内容的文件
grep -r "key" dir
grep -R --include="*.java" “key” dir

3. 搜索空白行
grep -n "^&" file

4. 搜索以小数点结尾的行
grep -n "\.&" file


© 著作权归作者所有

共有 人打赏支持
ancient_wind
粉丝 2
博文 15
码字总数 7895
作品 0
大兴
程序员
Linux的查找命令

在学习和使用Linux时经常需要查找文件。 在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,大多数人,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多...

驛路梨花醉美
2016/08/10
5
0
常用的几个查找命令

使用locate命令,遇到了这样的情况: 当前目录下有一个文件,而使用这个命令时却查找不到这个文件,上网查了一下,找到了原因,就在下面。 1. find find是最常见和最强大的查找命令,你可以用...

zhangyujsj
2015/10/14
52
0
Linux的五个查找命令

最近,我在学习Linux,下面是一些笔记。 使用电脑的时候,经常需要查找文件。 在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序...

阮一峰
2009/10/08
0
0
Atitit.软件guibuttonand面板---os区-----linux windows搜索文件 目录

Atitit.软件guibuttonand面板---os区-----搜索文件 1. Find 1 2. 寻找文件夹 1 3. 2. Locate// everything 1 4. 3. Whereis (windows马这个映射的方法) 2 5. 4. Which// everything+path 2 6......

技术mix呢
2017/10/12
0
0
linux的五个查找命令

使用电脑的时候,经常需要查找文件。 在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条...

nothingfinal
2012/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义Ubuntu/Windows双系统引导菜单主题

学习Linux自然少不了要装双系统,其中Ubuntu便是我们用的最多的Linux系统。装完双系统后,Ubuntu会自动生成grub开机引导及菜单,及其丑陋,而且很多我们用不到的选项。今天我们就介绍burg:修...

Linux就该这么学
20分钟前
0
0
Go 并发(二)

Go Mutex 通过Mutex和信道处理竞态条件。 临界区 当程序并发运行时,多个协程不应该同时访问那些修改共享资源的代码,这些修改共享资源的代码称为临界区。 Go中通过Mutex可以避免同时访问临界...

春哥大魔王的博客
23分钟前
0
0
CentOS 7安装和部署Docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本 uname -r3.10.0-514.el7.x86_64 1、...

狼王黄师傅
27分钟前
0
0
php扩展可以通过pecl 或者phpize 安装

pecl 算是 php 扩展的一个官方聚合平台,一些比较有名,有特点的扩展会被 pecl 收录,收录后可以通过 pecl 的方式安装。但是更多的扩展是没有收录在 pecl 上的,这些扩展还是需要通过 phpize...

bengozhong
27分钟前
0
0
CentOS中如何安装7ZIP

执行以下命令下载安装: wget http://nchc.dl.sourceforge.net/project/p7zip/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2tar -jxvf p7zip_9.20.1_src_all.tar.bz2cd p7zip_9.20.1make......

凯文加内特
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部