Linux
系统中查找文件的方法不同于Windows
系统,在Windows
系统中查找文件的方法比较容易,只要在桌面上点击“开始”-“搜索”中就能按照各种方式进行查找,对于Linux
新手来讲,在Linux
系统中查找一个文件比较空难,它不像Windows
那样方便,在Linux
中通常使用命令来查找文件,常见查找文件的命令有locate
、which
、whereis
和find
等。
locate
locate命令用来查找文件或目录
locate命令要比其他查找文件命令(列如find)快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用locate查找文件时,有时候会找到已经被删除的数据.为了避免这种情况,可以使用locate之前,先使用updatedb命令更新数据库
locate 命令参数 文件/目录
常用命令参数如下:
-c, --count 只输出找到的数量;
-d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db;
-i, --ignore-case 忽略大小写;
-q, --quiet 安静模式,不会显示任何错误讯息;
-e, --existing 只显示当前存在的文件条目;
列如 locate -c passwd
搜索包含passwd字母的文件或目录的总个数
which
which命令用于查找并显示你要查找的命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录,which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令.
which
是shell
内建命令,内建命令要比系统论命令有比较高的执行效率。
which 命令
列如 which passwd
可以查看passwd命令是放在/usr/bin目录下
whereis
whereis命令用来定位指令的二进制程序,源代码文件和man手册页等相关文件的路径
whereis 命令参数 文件名
常用命令参数如下:
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
列如 whereis -m useradd
使用whereis命令查找useradd命令的说明文件位置
find
find
命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find
命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find 查找目录 查找参数 查找内容
常用查找参数如下:
-amin<+|-分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<+|-24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<+|-分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<+|-24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-mmin<+|-分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mtime<+|-24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-depth:从指定目录下最深层的子目录开始查找;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-follow:排除符号连接;
-gid<群组识别码>:查找符合指定群组识别码的文件或目录;
-group<群组名称>:查找符合指定群组名称的文件或目录;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-size<+|-|=文件大小>:查找符合指定的文件大小的文件;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-a:是前后条件都要满足;
-o :是满足一个条件就好;
+:表示大于设置值的文件;
- :表示小于设置值的文件;
= :表示等于设置值的文件;
列如 find /root -size +1M
使用find查找/root目录下大于1M的文件
find -name "my*" -a -type d
使用find命令查找当前目录中所有以my开头的目录