Linux文件查看与查找命令
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 "\<[0-9]{2,3}\>" /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 "\<[0-9]{2,3}\>" /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)
只要有一个比如说属主 属组或者其他人有一个拥有写权限即可