文件查找命令
which
which
查找可执行文件,例如which ls
就可以找到ls
的存放地址,默认会展示第一个的地址,如果有多个需要加上-a
指令,这个指令的原理是根据PATH
去寻找可执行程序的位置。
where is
这个命令主要针对/bin
和/sbin
下面的可执行文件
1 | -l 可以列出 whereis 会去查询的几个主要目录而已 |
locate
非常好用、快速的文件查找,这个命令每天会自动更新,把数据从硬盘存入数据库。
如果添加了新的内容可能无法及时查出,需要使用updatedb
命令进行手动更新
1 | -i 忽略大小写的差异 |
find
功能强大,缺点就是慢,要从硬盘里面读取数据。
1 | find [path] [expression] |
path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
expression
的命令非常多,具体的可以使用man find
进行查看。
1 | -name pattern:按文件名查找,支持使用通配符 * 和 ?。 |
时间参数
1 | -mtime n :n为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件 |
这里需要注意n
、+n
、-n
的区别,n
只是指定当天的内容
群组参数
1 | -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字 |
权限参数
使用-perm 777
就可以查找该权限的文件
案例
查找系统24小时内改动的文件
1 | find / -mtime 0 |
查找系统3天前24小时内改动的文件
1 | find / -mtime 3 |
查找名为password的文件
1 | find / -name password |
查找关键字为password的文件
1 | find / -name "*password*" |
找出/run目录下,文件类型为socket的文件名
1 | find /run -type s |
参考
《鸟哥的Linux私房菜》(第四版)