首頁 > 軟體

Linux檔案檢視與查詢命令

2020-06-16 17:15:23

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)

              只要有一個比如說屬主 屬組或者其他人有一個擁有寫許可權即可

[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

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-05/143549.htm


IT145.com E-mail:sddin#qq.com