linux查⽂件及根据条件搜索⽂件内容
linux 查搜索⽂件及⽂件内容
搜索⽂件
1.使⽤ find 命令
Linux find命令可以⽤不同的搜索标准如名字、类型、所属⼈、⼤⼩等来搜索⽬录树。基本语法如下:
find  path  -option  [-print ][-exec  -ok  command ]{};
参数说明
find 根据下列规则判断 path 和 expression,在命令列上第⼀个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使⽤⽬前路径,如果 expression 是空字串则使⽤ -print 为预设 expression。
expression 中可使⽤的选项有⼆三⼗个之多,在此只介绍最常⽤的部份。
选项描述
-mount, -xdev只检查和指定⽬录在同⼀个⽂件系统下的⽂件,避免列出其它⽂件系统中的⽂件
-anewer file⽐⽂件 file 更晚被读取过的⽂件
-amin n在过去 n 分钟内被读取过
-atime n在过去n天内被读取过的⽂件
-cnewer file⽐⽂件 file 更新的⽂件
find查命令的使用-cmin n在过去 n 分钟内被修改过
-ctime n在过去n天内被修改过的⽂件
-empty空的⽂件
-gid n , -group name gid 是 n 或是 group 名称是 name
-ipath p, -path p路径名称符合 p 的⽂件,ipath 会忽略⼤⼩写
-name name, -iname name⽂件名称符合 name 的⽂件。iname 会忽略⼤⼩写
-
size n⽂件⼤⼩ 是 n 单位,b 代表 512 位元组的区块,c 表⽰字元数,k 表⽰ kilo bytes,w 是⼆个位元组。
-type c⽂件类型是 c 的⽂件。
d⽬录
c字型装置⽂件
b区块装置⽂件
b区块装置⽂件
选项描述
p具名贮列
f⼀般⽂件
l符号连结
-pid n process id 是 n 的⽂件
s socket
你可以使⽤ ( ) 将运算式分隔,并使⽤下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
实例
将当前⽬录及其⼦⽬录下所有⽂件后缀为 .c 的⽂件列出来:
find .-name "*.c"
将当前⽬录及其⼦⽬录中的所有⽂件列出:
find .-type f
将当前⽬录及其⼦⽬录下所有最近 20 天内更新过的⽂件列出:
find .-ctime -20  //20天内
find .-ctime +20  //20天前
查 /var/log ⽬录中更改时间在 7 ⽇以前的普通⽂件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm{} \;
查当前⽬录中⽂件属主具有读、写权限,并且⽂件所属组的⽤户和其他⽤户具有读权限的⽂件:
find .-type f -perm 644 -exec ls-l {} \;
查系统中所有⽂件长度为 0 的普通⽂件,并列出它们的完整路径:
find /-type f -size 0 -exec ls-l {} \;
2.使⽤locate命令
Linux locate命令⽤于查符合条件的⽂档,他会去保存⽂档和⽬录名称的数据库内,查合乎范本样式条件的⽂档或⽬录。基本语法如下:
locate [-d ][--help][--version][范本样式...]
参数说明
参数描述
-b–basename – 仅匹配路径名的基本名称
-c–count – 只输出到的数量
-d–database DBPATH – 使⽤ DBPATH 指定的数据库,⽽不是默认数据库 /var/lib/mlocate/mlocate.db -e–existing – 仅打印当前现有⽂件的条⽬
-1– 如果 是 1.则启动安全模式。在安全模式下,使⽤者不会看到权限⽆法看到 的档案。这会始速度减慢,因为 locate 必须⾄实际的档案系统中
取得档案的 权限资料。
-
0–null – 在输出上带有NUL的单独条⽬
-S–statistics – 不搜索条⽬,打印有关每个数据库的统计信息
-q–quiet – 安静模式,不会显⽰任何错误讯息
-P–nofollow, -H – 检查⽂件存在时不要遵循尾随的符号链接
-l–limit, -n LIMIT – 将输出(或计数)限制为LIMIT个条⽬
-n– ⾄多显⽰ n个输出。
-m–mmap – 被忽略,为了向后兼容
-r–regexp REGEXP – 使⽤基本正则表达式
regex
– 使⽤扩展正则表达式
-
s–stdio – 被忽略,为了向后兼容
-o– 指定资料库存的名称。
-h–help – 显⽰帮助
-i–ignore-case – 忽略⼤⼩写
-V–version – 显⽰版本信息
参数描述
实例
查 passwd ⽂件,输⼊以下命令:
locate passwd
搜索 etc ⽬录下所有以 sh 开头的⽂件 :
locate /etc/sh
忽略⼤⼩写搜索当前⽤户⽬录下所有以 r 开头的⽂件 :
locate -i ~/r
附加说明
locate 与 find 不同: find 是去硬盘,locate 只在 /var/lib/slocate 资料库中。
locate 的速度⽐ find 快,它并不是真的查,⽽是查数据库,⼀般⽂件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查并不是实时的,⽽是以数据库的更新为准,⼀般是系统⾃⼰维护,也可以⼿⼯升级数据库 ,命令为:
updatedb
默认情况下 updatedb 每天执⾏⼀次。
3.使⽤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
/root/sfdisk
/usr/include/grub/ieee1275/ofdisk.h
/usr/share/doc/util-Linux/README.cfdisk
/usr/share/doc/util-Linux/
/usr/share/doc/util-Linux/
4.使⽤which命令
Linux which命令⽤于查⽂件。which指令会在环境变量$PATH设置的⽬录⾥查符合条件的⽂件。基本语法如下:
which [⽂件...]
参数说明
参数描述
-n <⽂件名长度>指定⽂件名长度,指定的长度必须⼤于或等于所有⽂件中最长的⽂件名。
-p <⽂件名长度>与-n参数相同,但此处的<⽂件名长度>包括了⽂件的路径。
-w指定输出时栏位的宽度。
-V显⽰版本信息。
实例
使⽤指令"which"查看指令"bash"的绝对路径,输⼊如下命令:
$ which bash
上⾯的指令执⾏后,输出信息如下所⽰:
/bin/bash
5.使⽤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路径、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.使⽤cat 命令
cat(英⽂全拼:concatenate)命令⽤于连接⽂件并打印到标准输出设备上。语法如下:
cat[-AbeEnstTuv][--help][--version] fileName
参数说明
参数描述
-n 或 --number由 1 开始对所有输出的⾏数编号。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。