前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >find命令 原

find命令 原

作者头像
阿dai学长
发布2019-04-03 15:08:08
5550
发布2019-04-03 15:08:08
举报
文章被收录于专栏:阿dai_linux阿dai_linux

第二章 文件、目录管理

2.23-2.25 find 命令

find命令

语法: find [路径] [参数] ;find [选项] [路径] [filename]

  • find [路径] [参数]
    • 参数: -atime +n/-n:访问或执行时间大于/小于n天的文件 -ctime +n/-n:写入、更改inode属性(eg:更改所有者、权限或者链接)时间大于/小于n天的文件 -mtime +n/-n:写入时间大于/小于n天的文件 eg:
代码语言:javascript
复制
[root@adai002 ~]# find /tmp/ -mtime -1  查找/tmp/目录下mtime小于一天的文件
/tmp/
/tmp/systemd-private-5b2dd290403a4a81971c2021ccddc492-vmtoolsd.service-tmYbrv
/tmp/systemd-private-5b2dd290403a4a81971c2021ccddc492-vmtoolsd.service-tmYbrv/tmp
/tmp/systemd-private-5b2dd290403a4a81971c2021ccddc492-vmtoolsd.service-tmYbrv/tmp/vmware-root
  • find [选项] [路径] [filename]
    • 选项: -name filename:直接查找该文件名的文件 eg:
代码语言:javascript
复制
[root@adai002 ~]# find . -name test2.txt
在该目录精确查找test2.txt
./test/test2.txt
[root@adai002 ~]# find . -name "test*" 
在该目录下查找含有test的文件(模糊搜索)
./test
./test/test2.txt

-type filename:通过文件类型查找(文件类型:f,b,c,d,l,s等) eg:

代码语言:javascript
复制
[root@adai002 ~]# find . -type d   在该目录下搜索目录文件
.
./.ssh
./test

locate命令

通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里,属于模糊搜索。 语法: locate [filename] 如果locate命令不存在,需要执行如下操作:

代码语言:javascript
复制
[root@adai002 ~]# locate ls
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录
[root@adai002 ~]# updatedb   生成列表库

注: 安装好mlocate包后,运行locate命令会报错,这是因为系统还没有生成那个文件列表库。使用updatedb命令立即生成(更新)这个列表库。[因为该命令运行需要较大运行内存,所以服务器在跑着重要业务时尽量不要运行此命令]。该数据库每周更新一次,如果某文件是在两次跟更新时间段内常见的,是搜不到的,需要到/etc/updated.conf去配置该数据库生成(更新)的规则。

which命令

查找可执行文件的绝对路径及别名设置。

代码语言:javascript
复制
[root@adai002 ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

注: 该命令只能用来查找PATH环境变量中出现的路径下的可执行文件。

whereis命令

它类似于locate命令,在一个预先生成的文件列表库查找跟给出的文件名相关的文件(模糊查找)。 语法: whereis [选项] [filename] 选项: -b 只找binary文件 -m 只找说明文件manual路径下的文件 -s 只找source来源文件 -u 没有说明档的文件 eg:

代码语言:javascript
复制
[root@adai002 ~]# whereis ls  
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

扩展:

1) find -perm里的+/-的含义:

比如当前目录下有四个文件a、b、c、d a文件的权限为6000,即a文件仅有suid、sgid特殊权限 b文件的权限为2000,即b文件仅有sgid特殊权限 c文件的权限为4000,即c文件仅有suid特殊权限 d文件的权限为6600,即d文件在拥有suid、sgid特殊权限的同时还有rw权限 那么现在find . -type f -perm 6000 可以找到a文件,如果现在查找find . -type f -perm -6000可以找到a、d两个文件,原因是: 我们先将abcd四个文件的权限转化为二进制那么, a权限转为2进制后为 110 000 000 000 b权限转为2进制后为 010 000 000 000 c权限转为2进制后为 100 000 000 000 d权限转为2进制后为 110 110 000 000 在find . -type f -perm -6000 中的6000权限转为2进制为110 000 000 000,那么6000前的-号代表缺一不可,也就是如果有1的地方必须有1,那么这里找-6000权限的文件,这6000权限里前面有2个位置都是1,所以这里find找-6000权限的文件就是找前面2个位置都是1的文件.而只有a、d这两个文件前2个位置都是1,所以find . -type f -perm -6000 只会找到a d两个文件。 如果用find . -type f -perm +6000会找到abcd这4个文件,这是因为: +6000里的这个+号代表有1即可,也就是有1的位置只要有1就可以.那么这里找+6000权限的文件,这6000权限前面2个位置都有1,所以这里find找+6000权限的文件就是找前面2个位置只要有一个位置有1的文件就可以了。

2) 三个时间属性

atime(=access time),即在读取文件或者执行文件时更改。 ctime(=change time),即在写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改。 mtime(=modified time),即写入文件时随文件内容的更改而更改。 在Linux下,可以通过‘df -i’查看各个分区的inode数量。 stat命令: 用来列出文件的atime、ctime、mtime

代码语言:javascript
复制
[root@adai002 ~]# stat ./test/test2.txt
  文件:"./test/test2.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:803h/2051d	Inode:50757613    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-06-09 18:00:14.896259676 +0800
最近更改:2017-06-09 18:00:14.896259676 +0800
最近改动:2017-06-09 18:00:14.896259676 +0800
创建时间:-

注: atime不一定在文件被访问之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数,那么就不会更新atime的信息。总之,这个三个time属性都放在inode中。若mtime修改inode就一定会改,既然inode改了,那ctime也就跟着改了(atime比较特殊,atime改变ctime不一定改变)。

3) 快捷键的使用

常用快捷键: Ctrl+c:终止当前命令 tab:补全命令或目录 Ctrl+d: 退出当前终端,同exit Ctrl+z: 暂停当前进程,暂停后可以用fg恢复它。 Ctrl+l: 清屏 Ctrl+u: 删除光标前面的所有字符 Ctrl+k: 删除光标后面的所有字符 Ctrl+a: 快速把光标定位到行首 Ctrl+e: 快速把光标定位到行尾 Ctrl+s: 锁屏 Ctrl+q: 开屏

2.26 文件名后缀

一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

Linux下常见的文件扩展名:

.php ------这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件; .so -------这类是库文件; .doc *.obt --------这是OpenOffice 能打开的文件;

.bz2 ------bzip2的压缩文件

.gz ------gzip的压缩文件

.tar ------tar打包文件(是包文件不是压缩文件)

.tbz------tar打包并用bzip压缩文件

.tgz-----tar打包并用gzip压缩的文件

.au -----audio文件

.gif -----gif图象文件

.html/.htm-----HTML文件

.jpg-----JPEG图象文件

.pdf------电子文档(PDF格式的)

.png-----PNG图象文件

.ps------postscinpt文件(打印格式文件)

.txt------纯文本文件

.wav-----audio文件

.xpm-----图象文件

.conf-------配置文件

.lock-------LOCK文件(用来判断一个文件或设备是否被使用)

.rpm------REDHATPackage.Manager文件(套件包或软件包)

.c -------C源程序代码文件

.cpp------C++源程序代码文件

.h -------C或C++程序的头文件

.o------程序目标文件

.pl------perl脚本文件

.so-----类库文件

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/06/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第二章 文件、目录管理
    • 2.23-2.25 find 命令
      • find命令
      • locate命令
      • which命令
      • whereis命令
      • 扩展:
    • 2.26 文件名后缀
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档