Linux每周几个命令(一)--查找篇

Linux每周几个命令--查找篇

标签(空格分隔): linux


当要查找某一个文件位置的时候,在linux下可以使用如下命令:

  1. which 查看可执行文件位置
  2. whereis 查看文件位置
  3. locate 配合数据库查找文件位置
  4. find 搜寻指定目录下的文件位置

下面对其逐个分析:


1.which

which指令是在系统配置的Path环境变量中查找某一个命令的位置,并且返回第一个搜索结果.用该指令可以很轻松的查找到执行的到底是哪一个位置的命令.

1.命令格式

which 文件名

2.命令作用

在系统PATH变量中查找,并返回第一个结果

3.使用示例
查找mysql命令位置(前提安装了mysql)

[root@VM_105_120_centos ~]# which mysql
/usr/bin/mysql
[root@VM_105_120_centos ~]# 

查找java命令位置(前提安装了Java)

[root@VM_105_120_centos ~]# which java
/usr/java/jdk1.8.0_102/bin/java
[root@VM_105_120_centos ~]# 

查找失败时,会打印出当前PATH变量

[root@VM_105_120_centos ~]# which apache
/usr/bin/which: no apache in (/usr/java/jdk1.8.0_102/bin:/usr/java/jdk1.8.0_102/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_102/bin:/root/bin:/root/bin)
[root@VM_105_120_centos ~]# 

2.whereis

whereis的搜索是有限的几种文件,但是其搜索速度很快,原因是李永乐linux的文件索引数据库,该数据库在centos下每天更新一次,所以到时whereis可能会查找出来已删除的文件,如果要实时查找,在执行命令前先执行updatedb,更新数据库索引你.

1.命令格式

 whereis [选项] 文件

2.命令参数

 -b         只搜索二进制文件
 -B <目录>  定义二进制文件查找路径
 -m         只搜索 man 手册
 -M <目录>  定义 man 手册查找路径
 -s         只搜索源代码
 -S <目录>  定义源代码查找路径
 -f         终止 <目录> 参数列表
 -u         搜索不常见记录
 -l         输出有效查找路径

3.命令作用
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

4.使用示例
查找出mysql位置,和which相比查找出了全部位置

[root@VM_105_120_centos ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

只查找二进制文件,也就是可执行文件,结果过滤掉了gz压缩文件

[root@VM_105_120_centos ~]# whereis -b mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql

3.locate

locate和whereis一样都是通过数据库查找,所以实时性会有问题,不同的是locate是查找文件的全路径,只要匹配就列出,而且支持正则表达式.

1.命令格式

locate [OPTION]... [PATTERN]...

2.命令参数

-i 忽略大小写
-l 指定查找数量
-r 正则匹配查找
-c 统计出符合查找规则的数量

3.命令作用

快速定位符合要求的路径位置.

4.使用示例
locate查找mysql

[root@VM_105_120_centos ~]# locate mysql
/etc/ld.so.conf.d/mysql-x86_64.conf
/etc/logrotate.d/mysql
/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
/etc/rc.d/init.d/mysqld
/etc/rc.d/rc0.d/K36mysqld
/etc/rc.d/rc1.d/K36mysqld
.......

locate统计出含有mysql字符的数量

[root@VM_105_120_centos ~]# locate -c mysql
649

locate查找mysql结尾的文件

[root@VM_105_120_centos ~]# locate -r mysql$
/etc/logrotate.d/mysql
/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
/usr/bin/mysql
/usr/lib64/mysql
/usr/share/mysql
/var/lib/mysql
/var/lib/mysql/mysql

4.find

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

1.命令格式

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;

2.命令参数

-name 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]
-gid n 查找属于 ID 号为 n 的用户组的所有文件。
-uid n 查找属于 ID 号为 n 的用户的所有文件。
-group 查找属于用户组名为所给字串的所有的文件。
-user 查找属于用户名为所给字串的所有的文件。
-nouser 查找没有属主的文件或目录
-nogoroup 查找没有属组的文件或目录
-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。
-size n[bckw]查找指定文件大小的文件,n后面的字符表示单位,缺省为 b,代表 512字节的块。
-type x 查找类型为 x 的文件,x 为下列字符之一:
    b 块设备文件
    c 字符设备文件
    d 目录文件
    p 命名管道(FIFO)
    f 普通文件
    l 符号链接文件(symbolic links)
    s socket 文件
以时间为条件查找
-amin n 查找 n 分钟以前被访问过的所有文件。
-atime n 查找 n 天以前 24 小时内被访问过的所有文件。
-cmin n 查找 n 分钟以前文件状态被修改过的所有文件。
-ctime n 查找 n 天以前 24 小时内文件状态被修改过的所有文件。
-mmin n 查找 n 分钟以前文件内容被修改过的所有文件。
-mtime n 查找 n 天以前 24 小时内文件内容被修改过的所有文件。
-print:将搜索结果输出到标准输出。

3.使用示例
在var目录下查找mysql

[root@VM_105_120_centos ~]# find /var -name mysql 
/var/lib/mysql
/var/lib/mysql/mysql

查找usr目录下mysql,并且类型为一般文件,最后列出详细信息

[root@VM_105_120_centos ~]# find /usr -name mysql -type f  -exec ls -l {} \;
-rwxr-xr-x 1 root root 10416008 9月  29 01:42 /usr/bin/mysql

关于mtime这个以后会用的很多

find $PATH -mtime 0 查找距当前时间 24 小时以内修改的文件
find $PATH -mtime +n 查找距当前时间 n 天以外修改的文件
find $PATH -mtime -n 查找距当前时间 n 天以内修改的文件
find $PATH -mtime n 查询距当前时间 n 天之前 24 小时以内修改的文件

关于exec,这个常用来批量处理
find可以很好地定位到文件,但是往往我们定位到文件后还会继续其他操作,那么exec用处就来了.举个例子,查找tomcat的log文件,然后删除.

[root@VM_105_120_centos ~]# find /root/apache-tomcat-8.5.6 -name *.log -exec rm {} \;

执行后直接就删除了,也没提醒,这显然不合适,换成-ok,这个属于安全模式下的-exec

[root@VM_105_120_centos ~]# find /root/apache-tomcat-8.5.6 -name *.txt -ok rm {} \;
< rm ... /root/apache-tomcat-8.5.6/webapps/austoj/WEB-INF/view/robots.txt > ? y
< rm ... /root/apache-tomcat-8.5.6/logs/localhost_access_log.2016-12-07.txt > ? y
< rm ... /root/apache-tomcat-8.5.6/logs/localhost_access_log.2016-10-23.txt > ? n

再比如查询48小时前更改过的文件,并删除

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

推荐阅读更多精彩内容