博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找命令集:which/whereis/locate/find
阅读量:5914 次
发布时间:2019-06-19

本文共 6691 字,大约阅读时间需要 22 分钟。

hot3.png

本文索引:

  • which
  • whereis
  • locate
  • 快捷键使用
  • atime/ctime/mtime
    • 场景说明
    • 总结
  • find
    • 常用选项
    • 常用参数
    • 配合管道和xargs
    • 多参数组合
  • 文件后缀

which

which 搜索可执行文件,必须在PATH环境变量目录中!!否则无法搜到!

[root@centos7 ~]# which lsalias ls='ls --color=auto'	/usr/bin/ls

whereis

用来查找一个命令相关的文件(二进制文件、源文件和manual文件)

[root@centos7 ~]# whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

locate

默认系统未安装 使用 yum install -y mlocate 安装;locate会搜索包含命令后续所给参数的所有文件!!

初次完装需要初始化数据库:updatedb

[root@centos7 ~]# yum install -y mlocate[root@centos7 ~]#  updatedb[root@centos7 ~]#  locate ls/boot/grub2/i386-pc/blscfg.mod/boot/grub2/i386-pc/cbls.mod/boot/grub2/i386-pc/command.lst/boot/grub2/i386-pc/crypto.lst/boot/grub2/i386-pc/fs.lst/boot/grub2/i386-pc/ls.mod/boot/grub2/i386-pc/lsacpi.mod/boot/grub2/i386-pc/lsapm.mod/boot/grub2/i386-pc/lsmmap.mod/boot/grub2/i386-pc/lspci.mod.....

默认在每天凌晨4点会自动执行数据库的更新;

注意:在更新后新创建的文件、目录,使用locate命令将无法搜索到,这时手动执行 updatedb 后才能搜索到!

快捷键

  • ctrl + d 暂停执行的命令
  • ctrl + c 停止执行的命令
  • ctrl + u 删除光标前至开头的输入
  • ctrl + a 移动光标至行首
  • ctrl + e 移动光标至行尾

atime/mtime/ctime

stat命令可以显示文件、目录的三个时间

[root@centos7 ~]# stat 1.txt   文件:"1.txt"  大小:0         	块:0          IO 块:4096   普通空文件设备:803h/2051d	Inode:16808582    硬链接:2权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)环境:unconfined_u:object_r:admin_home_t:s0最近访问:2017-09-20 22:26:23.383747117 +0800最近更改:2017-09-20 22:26:23.383747117 +0800最近改动:2017-09-20 22:26:33.616862124 +0800创建时间:-[root@centos7 test]# stat /test  文件:"/test"  大小:32        	块:0          IO 块:4096   目录设备:803h/2051d	Inode:8812627     硬链接:2权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)环境:unconfined_u:object_r:default_t:s0最近访问:2017-10-21 10:28:30.074269196 +0800最近更改:2017-10-21 10:28:29.311262182 +0800最近改动:2017-10-21 10:28:29.311262182 +0800创建时间:-
  • atime 访问时间
  • mtime 更改时间(改的是内容)
  • ctime 改动时间(权限、名称、inode号)

修改了内容,其mtime会变,同时ctime也会变(inode会随内容变化而变化),但atime不变

场景说明

  • cat命令只会更新atime
  • vim命令修改文件但不保存不更新三个time
  • vim命令修改文件并保存,三个time都更新
  • chmod修改权限更新ctime
  • touch命令三个time都更新(很特殊

使用echo追加数据至文件,不改变atime!因为文件未被查看,也没被打开,但是文件的内容、inode都变了,因此mtime和ctime变了!

总结

!!但凡更改了mtime,ctime会随之更改;但反过来更改ctime,mtime却不一定改变。(touch命令情况除外)

对文件内容进行修改,文件的inode号随之更改,因此ctime会改变;

而改变了文件的权限,文件的ctime会改变,但是只要文件的内容不变,mtime不会改变(touch除外)

find

一个功能强大的搜索命令

使用方法:find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

常用选项(option)

# 测试[root@centos7 test]# tree.├── 1.txt├── 2.txt├── dir1│   ├── test1.tar│   ├── test.conf│   ├── test.sh│   ├── test.tar│   └── test.txt├── test1.tar├── test.conf├── test.sh└── test.tar1 directory, 11 files
  • -name 按文件名来查找(-iname 忽略大小写)
[root@centos7 test]# find /test/ -name "1.txt" /test/1.txt
  • -type 按文件类型来查找
[root@centos7 test]# find /test/ -type d /test//test/dir1
  • -size 按文件大小来查找
[root@centos7 test]# find /test/ -size -10k/test//test/dir1/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -inum 按inode号来查找
[root@centos7 test]# ls -il总用量 025721052 drwxr-xr-x. 2 root root 71 10月 21 13:39 dir1 8812618 -rw-r--r--. 1 root root  0 10月 21 13:26 test1.tar 8812616 -rw-r--r--. 1 root root  0 10月 21 13:26 test.conf 8812617 -rw-r--r--. 1 root root  0 10月 21 13:26 test.sh 8812623 -rw-r--r--. 1 root root  0 10月 21 13:26 test.tar[root@centos7 test]# find /test/ -inum 8812618 /test/test1.tar
  • -depth 大类

按目录深度来查找(具体有-maxdepth/-mindepth)

[root@centos7 test]# find /test/ -maxdepth 1 /test//test/dir1/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -time 大类

按时间来查找(具体有-amin/cmin/mmin,atime/ctime/mtime)

# 以ctime为例查找[root@centos7 test]# find /test/ -ctime -1 /test//test/2.txt/test/dir1/test/dir1/test.txt/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/1.txt/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -executable 按是否可执行(有x权限)
[root@centos7 test]# find /test/ -executable /test//test/dir1
  • -newer 按是否比参考文件更新(修改时间里现在更近),对应的有-older参数
[root@centos7 test]# find /test/ -newer /root/test.cap /test//test/2.txt/test/dir1/test/dir1/test.txt/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/1.txt/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -user/group 按文件的所有者/所属组来查找
[root@centos7 test]# find /test/ -user root/test//test/2.txt/test/dir1/test/dir1/test.txt/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/1.txt/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -perm MODE 按文件权限(数字形式)
[root@centos7 test]# find /test/ -perm 644 /test/2.txt/test/dir1/test.txt/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/1.txt/test/test.conf/test/test.sh/test/test1.tar/test/test.tar
  • -uid/gid 按文件的uid/gid来查找
[root@centos7 test]# find /test/ -uid 0/test//test/2.txt/test/dir1/test/dir1/test.txt/test/dir1/test1.tar/test/dir1/test.conf/test/dir1/test.sh/test/dir1/test.tar/test/1.txt/test/test.conf/test/test.sh/test/test1.tar/test/test.tar

常用参数

  • -delete 对查找的内容进行删除操作
# 配置-name使用,删除找到的文件/目录[root@centos7 test]# find /test/ -name "*.txt" -delete [root@centos7 test]# ls -l总用量 0drwxr-xr-x. 2 root root 71 10月 21 13:39 dir1-rw-r--r--. 1 root root  0 10月 21 13:26 test1.tar-rw-r--r--. 1 root root  0 10月 21 13:26 test.conf-rw-r--r--. 1 root root  0 10月 21 13:26 test.sh-rw-r--r--. 1 root root  0 10月 21 13:26 test.tar
  • -exec 对查找的内容执行后接命令
# 将大于100M的文件创建备份# 注意命令最后的“\;”[root@centos7 test]# find / -type f -size +100M -exec cp {} {}.bak \;
  • -print 一行显示打印的文件的全称
  • -print0 在null字符后打印出文件的全称(结果显示为一串)
# -print0打印时会将换行符也取消,显示内容的一部分会出现在下一个提示符行首[root@centos7 test]# find /test -type d -print0/test/test/dir1[root@centos7 test]# [root@centos7 test]# find /test -type d -print/test/test/dir1

配合管道和xargs

它会将目录的子目录下的文件也都显示出来!![root@centos7 test]# find /test -type f | xargs ls -l -rw-r--r--. 2 root root 8 10月 21 10:22 /test/1.txt-rw-r--r--. 2 root root 8 10月 21 10:22 /test/2.txt-rw-r--r--. 1 root root 0 10月 21 10:59 /test/dir1/test.txt

多个参数配合使用

  • -a 同时满足多个条件
# 多个条件限定查找[root@centos7 test]# find /root -type d -a -name "test" | xargs ls -ld drwxr-xr-x. 3 root root 162 10月 19 20:40 /root/test
  • -o 满足其中一个要求即可
[root@centos7 test]# find /root -name "tmp" -o -name "test" | xargs ls -ld drwxr-xr-x. 3 root root 162 10月 19 20:40 /root/testdrwxr-xr-x. 2 root root  73 10月  6 20:54 /root/tmp

文件后缀

Linux下的文件后缀没有什么实际意义,给文件添加后缀的目的是为了方便区分!!

使用stat命令可以查看文件类型!

# 我将一个普通的文本文件改名为1.tar(常规意义上的打包文件),其实质还是普通的文本文件![root@centos7 test]# stat 1.tar   文件:"1.tar"  大小:12        	块:8          IO 块:4096   普通文件设备:803h/2051d	Inode:8812615     硬链接:2权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)环境:unconfined_u:object_r:default_t:s0最近访问:2017-10-21 11:14:20.514251393 +0800最近更改:2017-10-21 11:13:34.243028671 +0800最近改动:2017-10-21 11:30:45.301244474 +0800创建时间:-

转载于:https://my.oschina.net/LuCastiel/blog/1554287

你可能感兴趣的文章
一年多了,该回来了……
查看>>
四则运算
查看>>
Qt5 for Android: incompatible ABI
查看>>
zookeeper学习
查看>>
class类名的管理
查看>>
LeetCode:Rectangle Area
查看>>
文本查询
查看>>
查看帐号授权信息
查看>>
小程序(四):模板
查看>>
【转】Java - printf
查看>>
jquery获取元素到屏幕底的可视距离
查看>>
ENDNOTE使用方法(转发)
查看>>
计算机数制和运算的一点总结.
查看>>
UML系列 (五) 为什么要用UML建模之建模的重要性
查看>>
框架是什么,框架有什么用(转)
查看>>
集成测试
查看>>
[android] 手机卫士黑名单功能(列表展示)
查看>>
c3p0连接池配置
查看>>
对于I/O流中解压中遇到的问题
查看>>
问答项目---用户注册的那些事儿(JS验证)
查看>>