Linux 文件查找命令详解
2018-02-23 18:33
141 查看
find命令
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。语法
find path -option [ -print ] [ -exec -ok command ] {} ;
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
选项 | 说明 |
---|---|
-mount, -xdev | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 |
-amin n | 在过去 n 分钟内被读取过 |
-anewer file | 比文件 file 更晚被读取过的文件 |
-atime n | 在过去 n 天过读取过的文件 |
-cmin n | 在过去 n 分钟内被修改过 |
-cnewer file | 比文件 file 更新的文件 |
-ctime n | 在过去 n 天过修改过的文件 |
-empty | 空的文件 |
-gid:查找符合指定之群组识别码的文件或目录; | |
-group:查找符合指定之群组名称的文件或目录; | |
-ipath p, -path p | 路径名称符合 p 的文件,ipath 会忽略大小写 |
-name name, -iname name | 文件名称符合 name 的文件。iname 会忽略大小写 |
-size n | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 |
-type | 只寻找符合指定的文件类型的文件;-type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket |
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
locate命令
locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库
/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
updatedb命令用来创建或更新slocate命令所必需的数据库文件。updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入slocate数据库文件中。
-o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件; -U<目录>:更新指定目录的slocate数据库; -v:显示执行的详细过程。
语法
locate [-d ][--help][--version][范本样式...]
参数:
选项 | 说明 |
---|---|
-d或--database= | 指定数据库所在的目录; |
-u | 更新slocate数据库; |
--help | 显示帮助; |
--version | 显示版本信息。 |
查找passwd文件,输入以下命令:
locate passwd
附加说明
locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:
locate -u
slocate命令
Linux slocate命令查找文件或目录。slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法
slocate [-u][--help][--version][-d <目录>][查找的文件]
参数:
选项 | 说明 |
---|---|
-d或--database= | 指定数据库所在的目录; |
-u | 更新slocate数据库; |
--help | 显示帮助; |
--version | 显示版本信息。 |
使用指令"slocate"显示文件名中含有关键字"fdisk"的文件路径信息,输入如下命令:
$ slocate fdisk #显示文件名中含有fdisk关键字的文件的路径信息
执行以上命令后,指令执行的输出信息如下:
$ slocate fdisk #显示文件名中含有fdisk 关键字的文件的路径信息 /root/cfdisk #搜索到的文件路径列表 /root/fdisk /usr/include/grub/ieee1275/ofdisk.h /usr/share/doc/util-Linux/README.cfdisk /usr/share/doc/util-Linux/README.fdisk.gz
which命令
Linux which命令用于查找文件。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法
which [文件...]
参数:
选项 | 说明 |
---|---|
-n | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 |
-p | 与-n参数相同,但此处的包括了文件的路径。 |
-w | 指定输出时栏位的宽度。 |
-V | 显示版本信息。 |
使用指令"which"查看指令"bash"的绝对路径,输入如下命令:
$ which bash
上面的指令执行后,输出信息如下所示:
/bin/bash #bash可执行程序的绝对路径
whereis命令
Linux whereis命令用于查找文件。该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
语法
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
参数:
选项 | 说明 |
---|---|
-b:只查找二进制文件; | |
-B | 只在设置的目录下查找二进制文件; |
-f | 不显示文件名前的路径名称; |
-m | 只查找说明文件; |
-M | 只在设置的目录下查找说明文件; |
-s | 只查找原始代码文件; |
-S | 只在设置的目录下查找原始代码文件; |
-u | 查找不包含指定类型的文件。 |
使用指令"whereis"查看指令"bash"的位置,输入如下命令:
$ whereis bash
上面的指令执行后,输出信息如下所示:
bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz
注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。
如果用户需要单独查询二进制文件或帮助文件,可使用如下命令:
$ whereis -b bash $ whereis -m bash
输出信息如下:
$ whereis -b bash #显示bash 命令的二进制程序 bash: /bin/bash /etc/bash.bashrc /usr/share/bash # bash命令的二进制程序的地址 $ whereis -m bash #显示bash 命令的帮助文件 bash: /usr/share/man/man1/bash.1.gz #bash命令的帮助文件地址
相关文章推荐
- linux下find和locate文件查找命令详解
- Linux文件查找命令 find 详解
- Linux文件的默认权限与查找命令详解
- 第005课 linux进阶命令(文件查找,文件解压操作详解)
- Linux文件的默认权限与查找命令详解
- Linux基础(十一)--Linux文件查找命令Find详解
- find命令_Linux find 命令用法详解:在指定目录下查找文件
- whereis命令_Linux whereis 命令用法详解:查找二进制程序、代码等相关文件路径
- Linux文件查找命令及find详解
- linux下查找文件find命令详解
- findfs命令_Linux findfs 命令用法详解:标签或UUID查找文件系统
- linux中Find、whereis、locate、which查找文件命令详解
- strings命令_Linux strings 命令用法详解:在对象文件或二进制文件中查找可打印的字符串
- Linux文件操作详解(六)--文件/文件夹的查找(find命令)
- linux find命令参数及用法详解--linux查找文件命令
- linux文件查找命令之find详解
- egrep命令_Linux egrep 命令用法详解:在文件内查找指定的字符串
- linux find命令参数及用法详解--linux查找文件命令
- Linux之文件查找命令locate与find详解
- 【Linux命令详解】3、文件和命令查找―(whereis、which)