Linux文件查看与查找命令
cat 查看一个文件
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
-T:显示制表符
常用:cat -An /etc/passwd
[root@linuxidc ~]# cat -An /etc/passwd
1 root:x:0:0:root:/root:/bin/bash$
2 bin:x:1:1:bin:/bin:/sbin/nologin$
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin$
4 adm:x:3:4:adm:/var/adm:/sbin/nologin$
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
6 sync:x:5:0:sync:/sbin:/bin/sync$
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$
8 halt:x:7:0:halt:/sbin:/sbin/halt$
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin$
more 分页查看文件
文件内容较多时,用more命令查看,空格键下翻,b键上翻,Q退出
[root@linuxidc ~]# more install.log
Installing libgcc-4.4.7-17.el6.x86_64
warning: libgcc-4.4.7-17.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c10
5b9de: NOKEY
Installing fontpackages-filesystem-1.41-1.1.el6.noarch
Installing m17n-db-1.5.5-1.1.el6.noarch
Installing liberation-fonts-common-1.05.1.20090721-5.el6.noarch
Installing setup-2.8.14-20.el6_4.1.noarch
Installing xkeyboard-config-2.16-1.el6.noarch
Installing xml-common-0.6.3-33.el6.noarch
Installing iso-codes-3.16-2.el6.noarch
Installing filesystem-2.4.30-3.el6.x86_64
Installing dejavu-fonts-common-2.33-1.el6.noarch
Installing mozilla-filesystem-1.9-5.1.el6.x86_64
Installing control-center-filesystem-2.28.1-40.el6.x86_64
Installing paktype-fonts-common-2.0-8.el6.noarch
Installing mesa-dri-filesystem-11.0.7-4.el6.x86_64
head显示前十行内容
[root@linuxidc ~]# head install.log
Installing libgcc-4.4.7-17.el6.x86_64
warning: libgcc-4.4.7-17.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing fontpackages-filesystem-1.41-1.1.el6.noarch
Installing m17n-db-1.5.5-1.1.el6.noarch
Installing liberation-fonts-common-1.05.1.20090721-5.el6.noarch
Installing setup-2.8.14-20.el6_4.1.noarch
Installing xkeyboard-config-2.16-1.el6.noarch
Installing xml-common-0.6.3-33.el6.noarch
Installing iso-codes-3.16-2.el6.noarch
Installing filesystem-2.4.30-3.el6.x86_64
-c#:指定获取前#个字节
[root@linuxidc ~]# head -c6 install.log
Instal[root@linuxidc ~]#
-n#:指定获取前#行
[root@linuxidc ~]# head -n6 install.log
Installing libgcc-4.4.7-17.el6.x86_64
warning: libgcc-4.4.7-17.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing fontpackages-filesystem-1.41-1.1.el6.noarch
Installing m17n-db-1.5.5-1.1.el6.noarch
Installing liberation-fonts-common-1.05.1.20090721-5.el6.noarch
Installing setup-2.8.14-20.el6_4.1.noarch
-#:指定行数
[root@linuxidc ~]# head -3 install.log
Installing libgcc-4.4.7-17.el6.x86_64
warning: libgcc-4.4.7-17.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing fontpackages-filesystem-1.41-1.1.el6.noarch
tail默认显示文件后面10行的内容
[root@linuxidc ~]# tail install.log
Installing iwl3945-firmware-15.32.2.9-4.el6.noarch
Installing ql2200-firmware-2.02.08-3.1.el6.noarch
Installing rt73usb-firmware-1.8-7.el6.noarch
Installing ipw2100-firmware-1.3-11.el6.noarch
Installing ql23xx-firmware-3.03.27-3.1.el6.noarch
Installing ipw2200-firmware-3.1-4.el6.noarch
Installing rootfiles-8.1-6.1.el6.noarch
Installing man-pages-3.22-20.el6.noarch
Installing words-3.0-17.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@linuxidc ~]#
-n#:指定获取后#行
[root@linuxidc ~]# tail -n2 install.log
Installing words-3.0-17.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@linuxidc ~]#
-#:指定行数
[root@linuxidc ~]# tail -2 install.log
Installing words-3.0-17.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@linuxidc ~]#
-f:实时查看文件的最新变化 用于排查故障的时候 等同于tailf
[root@linuxidc ~]# tailf install.log
Installing iwl3945-firmware-15.32.2.9-4.el6.noarch
Installing ql2200-firmware-2.02.08-3.1.el6.noarch
Installing rt73usb-firmware-1.8-7.el6.noarch
Installing ipw2100-firmware-1.3-11.el6.noarch
Installing ql23xx-firmware-3.03.27-3.1.el6.noarch
Installing ipw2200-firmware-3.1-4.el6.noarch
Installing rootfiles-8.1-6.1.el6.noarch
Installing man-pages-3.22-20.el6.noarch
Installing words-3.0-17.el6.noarch
*** FINISHED INSTALLING PACKAGES ***
cut:文本内容切割并按要求输出
-d:指明分隔符
-f:指明要取出的字段
如要取出此文件内容的第一段
[root@linuxidc ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@linuxidc ~]# cut -d ":" -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
wc:查看文件内容有多少字符,多少行,多少字节
[root@linuxidc ~]# wc /etc/passwd
35 54 1672 /etc/passwd
wc -l:统计行数 (常用)
[root@linuxidc ~]# wc -l /etc/passwd
35 /etc/passwd
sort:排序
-r 逆序
-n 按照数字大写
-f 忽略字符串大小写
-t “c” 以后面的字符作为分隔符
-k 选择某个字段 进行排序
[root@linuxidc ~]# cat /etc/passwd | sort -t ":" -k3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
uniq:删除重复 (常和sort命令一起使用)
-c 显示每行重复出现的次数
-d 仅显示重复
-u 显示不重复
连续且完全相同方为重复
用last显示登陆用户,排序后显示登陆的次数
[root@linuxidc ~]# last | cut -d' ' -f1 | sort | uniq -c
1
26 reboot
1 wtmp
文本检索工具
grep:作用:文本搜索工具,根据用户指定的模式,对目标文件逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件
-v:取反 显示不能被匹配到的行
-i:忽略字符的大小写
-n:显示行号
-c:显示统计到的行数,等同于wc -l
-o:仅显示匹配到的字符串
-q:静默输出(不输出任何信息) 只关心命令的执行结果 不关心输出结果
-A #:后#行
-B #:前#行
-C #:前后#行 查看日志 搜索关键字排查错误的时候
-e:指定多个条件,条件是或的关系
-w 匹配整个单词
-E === egrep 支持扩展的正则表达式
-F === fgrep 不支持正则表达式
显示出/etc/passwd下root的前后两行(第一个root为第一行,所以没有前两行)
[root@linuxidc ~]# grep -C 2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
基本正则表达式
字符匹配:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符 ——> 如:[abc] a | b | c
[^]:匹配指定范围外的任意单个字符 ——> 如:[^abc] 除abc之外的字符
[:alnum:] 数字和字符
[:alpha:] 英文大小写字符 a-z A-Z
[:lower:] 小写字母
[:upper:] 大写字母
[:space:] 专门匹配空格
匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数
*:匹配其前面的字符任意次 0-无穷
[root@linuxidc ~]# grep "r*" /etc//passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
.*:任意长度的任意字符出现任意次
[root@linuxidc ~]# grep "gdm.*" /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
\?:匹配前面的字符出现0次或者1次 (其前面的字符是可有可无的)
\+:匹配前面的字符至少1次
\{m,\}:匹配前的字符至少出现m次
\{m,n\}:匹配前面的字符出现至少m次至多n次
\{0,n\}:匹配前面的字符最多出现n
\{m,\}:匹配前的字符至少出现m次
位置锚定:用来定位字符出现的位置
^ 锚定行首(用于模式最左侧)
[root@linuxidc ~]# grep "^root" /etc//passwd
root:x:0:0:root:/root:/bin/bash
$ 锚定行尾(用于模式最右侧)
[root@linuxidc ~]# grep "bash$" /etc//passwd
root:x:0:0:root:/root:/bin/bash
zhouao:x:500:500:zhouao:/home/zhouao:/bin/bash
openstack:x:3000:3000::/home/openstack:/bin/bash
^$:匹配空行
^[[:space:]]*$:空行或包含空白字符的行
单词:非特殊字符组成的连续字符(字符串)都称为单词
\b \b:匹配词首和词尾
[root@linuxidc ~]# grep '\broot' /etc//passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
\< \>:匹配词首和词尾
例如:找出/etc/passwd下以/bin/bash结尾的行
[root@linuxidc ~]# grep "bash\>" /etc//passwd
root:x:0:0:root:/root:/bin/bash
zhouao:x:500:500:zhouao:/home/zhouao:/bin/bash
openstack:x:3000:3000::/home/openstack:/bin/bash
分组及引用
\(\):将一个或多个字符捆��在一起,当做一个整体进行处理
分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中
\1:模式从左侧起,第一个括号以及与之匹配的右括号之间的模式所匹配到的字符
\2:模式从左侧起,第二个括号以及与之匹配的右括号之间的模式所匹配到的字符
\3:模式从左侧起,第三个括号以及与之匹配的右括号之间的模式所匹配到的字符
[root@linuxidc ~]# grep "r..t" /etc//passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@linuxidc ~]# grep "^\(r..\)t.*\1" /etc//passwd
root:x:0:0:root:/root:/bin/bash
egrep:支持扩展的正则表达式实现类似于grep文本过滤功能
-G:支持基本正则表达式
扩展正则表达式
字符匹配
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符 ——> 如:[abc] a | b | c
[^]:匹配指定范围外的任意单个字符 ——> 如:[^abc] 除abc之外的字符
[:alnum:] 数字和字符
[:alpha:] 英文大小写字符 a-z A-Z
[:lower:] 小写字母
[:upper:] 大写字母
[:space:] 专门匹配空格
次数匹配:
匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数
*:匹配其前面的字符任意次 0-无穷
?:0或一次,其前的字符是可有可无的
+:其前的字符至少一次
{m}:其前的字符m次
{m,n}:至少m次,至多n次
位置锚定:
^:行首锚定
$:行位锚定
\< \>:词首锚定
\b \b:词首锚定
分组及引用:
():分组,括号内的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中
\1:模式从左侧起,第一个括号以及与之匹配的右括号之间的模式所匹配到的字符
\2:模式从左侧起,第二个括号以及与之匹配的右括号之间的模式所匹配到的字符
\3:模式从左侧起,第三个括号以及与之匹配的右括号之间的模式所匹配到的字符
或:
a|b:a或者b
C|cat:C或cat
(c|C)at:cat或Cat
例如:找出etc/passwd文件中的两位数或三位数
[root@linuxidc ~]# egrep "\" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@linuxidc ~]# egrep "\" /etc/passwd | cut -d: -f3,4
8:12
10:14
11:0
12:100
13:30
14:50
99:99
81:81
113:113
文件查找命令
find:实时查找工具,根据我们指定的内容或者条件在系统上进行实时查找
根据文件名查找
-name 可以使用通配符 比如 * ? [] [^]
find . -name “????”
例如:我想找某个文件名叫 yum 在/etc下
[root@linuxidc ~]# find /etc/ -name "yum"
/etc/logrotate.d/yum
/etc/yum
-iname 文件名称忽略大小写
[root@linuxidc ~]# find /etc/ -iname "think"
/etc/test/think
/etc/test/Think
根据属主和属组来查找
-user (查找属主指定用户的所有文件)
-group (查找属组指定组的所有文件)
-uid (查找属主指定的UID的所有文件)
-gid (查找属组指定的GID的所有文件)
-nouser 查找没有属主的文件或者目录
-nogroup 查找没有属组的文件或者目录
drwx------. 2 gdm gdm 4096 Apr 8 21:00 orbit-gdm
drwx------. 2 gdm gdm 4096 Apr 8 21:01 pulse-AThZYiEcGGK5
-rw-r--r--. 1 root root 0 Apr 1 11:38 tianjin
[root@linuxidc ~]# find /tmp -user gdm
/tmp/orbit-gdm
/tmp/orbit-gdm/linc-8ff-0-1f7ec1765e7bc
/tmp/orbit-gdm/linc-8d7-0-2f1d8aa3391d9
/tmp/orbit-gdm/linc-900-0-6e691ca28c58d
/tmp/orbit-gdm/linc-8fe-0-16fedb9f41908
/tmp/orbit-gdm/linc-8fd-0-12f82f71240f1
/tmp/orbit-gdm/linc-905-0-3d0482583370
[root@linuxidc ~]# find /tmp -group gdm
/tmp/orbit-gdm
/tmp/orbit-gdm/linc-8ff-0-1f7ec1765e7bc
/tmp/orbit-gdm/linc-8d7-0-2f1d8aa3391d9
/tmp/orbit-gdm/linc-900-0-6e691ca28c58d
/tmp/orbit-gdm/linc-8fe-0-16fedb9f41908
/tmp/orbit-gdm/linc-8fd-0-12f82f71240f1
/tmp/orbit-gdm/linc-905-0-3d0482583370
/tmp/orbit-gdm/linc-8fc-0-2f41c894bb0a2
根据文件类型查找
-type f 普通文件
d 目录
l 链接文件
s 套接字文件
b 块设备
c 字符设备
p 管道
[root@linuxidc ~]# find /dev -type b -ls
11341 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram9
11330 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram7
11320 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram8
11310 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram6
11302 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram5
11286 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram3
11277 0 brw-rw---- 1 root disk Apr 8 20:58 /dev/ram4
组合条件:
与:-a
或:-o
非:-not, !
多个条件要使用\(\) 不能使用“”
例如:查找/usr目录下不属于root、lp或gdm的所有文件或目录
[root@linuxidc ~]# find /usr -not \( -user root -o -user lp -o -user gdm \)
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
此题可理解为查找/usr目录下非root或lp或gdm的所有文件或目录
find
查找
/usr
/usr目录
-not
非
\(\)
多个条件要使用\(\) 不能使用“”
-user root
查找属主指定用户的所有文件或目录root
-o
或
–user lp
查找属主指定用户的所有文件或目录lp
-o
或
-user gdm
查找属主指定用户的所有文件或目录gdm
根据文件大小来查找 常用单位:k M G
-size +:大于多少的文件
-size -:小于多少的文件
-size :等于多少的文件
[root@linuxidc ~]# find /tmp -size -100k
/tmp
/tmp/keyring-jZvoAq
/tmp/keyring-jZvoAq/socket.pkcs11
/tmp/keyring-jZvoAq/socket.ssh
/tmp/keyring-jZvoAq/socket
/tmp/.ICE-unix
/tmp/.ICE-unix/2351
/tmp/pulse-Pdz6rX1vqurd
/tmp/pulse-Pdz6rX1vqurd/pid
/tmp/pulse-Pdz6rX1vqurd/native
/tmp/keyring-RBkZ6c
根据时间来查找
-mtime +7 7天以前的 从第8天开始
-mtime 7 当前时间往前推第7天
-mtime -7 当前时间往前推第7天以内
[root@linuxidc ~]# find /tmp -atime +7
/tmp/keyring-jZvoAq/socket.pkcs11
/tmp/keyring-jZvoAq/socket.ssh
/tmp/keyring-jZvoAq/socket
/tmp/keyring-1sJnSE/socket.pkcs11
/tmp/keyring-1sJnSE/socket.ssh
/tmp/keyring-1sJnSE/socket
/tmp/keyring-fa8GPq/socket.pkcs11
/tmp/keyring-fa8GPq/socket.ssh
[root@linuxidc ~]# stat /tmp/keyring-GggOAV/socket
File: `/tmp/keyring-GggOAV/socket'
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 806h/2054d Inode: 524364 Links: 1
Access: (0755/srwxr-xr-x) Uid: ( 500/ zhouao) Gid: ( 500/ zhouao)
Access: 2017-03-31 08:28:12.218218519 +0800
Modify: 2017-03-31 08:28:10.672218526 +0800
Change: 2017-03-31 08:28:10.672218526 +0800
根据权限来查找
-perm 755 精确匹配有755权限的文件
-perm -222 必须包含全部的222权限才可以
-perm +222(CentOS 6)
/222(CentOS 7)
只要有一个比如说属主 属组或者其他人有一个拥有写权限即可
[root@linuxidc ~]# find ./ -perm 644 -ls
8388610 56 -rw-r--r-- 1 root root 50606 Mar 24 05:57 ./install.log
8393099 4 -rw-r--r-- 1 root root 176 May 20 2009 ./.bash_profile
8388611 12 -rw-r--r-- 1 root root 10033 Mar 24 05:53 ./install.log.syslog
8393132 0 -rw-r--r-- 1 root root 0 Apr 1 11:32 ./tianjin
8393102 4 -rw-r--r-- 1 root root 129 Dec 4 2004 ./.tcshrc
8393100 4 -rw-r--r-- 1 root root 176 Sep 23 2004 ./.bashrc
[root@linuxidc ~]# find ./ -perm /666 -ls
8388609 4 dr-xr-x--- 7 root root 4096 Apr 8 21:03 ./
8393137 4 -rw------- 1 root root 67 Apr 3 15:18 ./.xauthHk2uLQ
8393128 4 drwx------ 3 root root 4096 Mar 24 06:01 ./.config
8393129 4 drwx------ 3 root root 4096 Mar 24 06:01 ./.config/ibus
8393130 4 drwx------ 2 root root 4096 Mar 24 06:01 ./.config/ibus/bus
8393133 4 drwxr-xr-x 2 root root 4096 Apr 1 15:10 ./test
8393124 4 -rw------- 1 root root 1478 Mar 24 05:57 ./anaconda-ks.cfg
8388610 56 -rw-r--r-- 1 root root 50606 Mar 24 05:57 ./install