1. 程式人生 > 實用技巧 >08 linux檔案檢索和編輯

08 linux檔案檢索和編輯

1. 檢索命令

1.1 檢索檔案內容

1.1.1 cat

作用 : 顯示檔案全部資訊

常用引數 :

cat -n 檔案      # 顯示行號和內容
[root@ymn ~]# cat -n ymn.txt
     1	ymn
     2	nihaiyigedahaoren
     3	dheugfymnchdg
     4	hahah
     5	ymn
     6	nihai

補充 : nl 檔案實現一樣的顯示行號和內容

1.1.2 head

作用 : 只顯示檔案前幾行資訊,預設前10行

常用引數 :

head -n 檔案  # 顯示檔案前n行內容
[root@ymn ~]# head num.txt
1
2
3
4
5
6
7
8
9
10
[root@ymn ~]# head -3 num.txt
1
2
3

1.1.3 tail

作用 : 只顯示檔案後幾行資訊,預設後10行

常用引數 :

tail -n 檔案  # 顯示檔案後n行內容
tail -f 檔案  # 阻塞住,一直顯示檔案新追加的內容,一般用作監聽日誌
[root@ymn ~]# tail num.txt
1
2
3
4
5
6
7
8
9
10
[root@ymn ~]# tail -3 num.txt
18
19
20

1.1.4 grep

作用 : 根據關鍵詞匹配檔案內容,以行的形式顯示

常用引數 :

引數 作用
-A n 檢索關鍵資訊包含後n行
-B n 檢索關鍵資訊包含前n行
-C n 以檢索資訊為中心顯示上下n行
-i 忽略大小寫
-E 識別特殊符號
-v 忽略掉檢索到的資訊,返回剩下的資訊
[root@ymn ~]# grep 'mn' ymn.txt
dheugfymnchdg
ymn

[root@ymn ~]# grep -A 2 'mn' ymn.txt    # 檢索關鍵資訊,包括後兩行
dheugfymnchdg
hahah
cnjdehfur
ymn
jvfrehgut
nihai

[root@ymn ~]# grep -B 2 'mn' ymn.txt
jhuwgfuedvfh
nihaiyigedahaoren
dheugfymnchdg
hahah
cnjdehfur
ymn

[root@ymn ~]# grep -C 2 'mn' ymn.txt    # 檢索關鍵資訊,包括前後兩行
jhuwgfuedvfh
nihaiyigedahaoren
dheugfymnchdg
hahah
cnjdehfur
ymn
jvfrehgut
nihai

[root@ymn ~]# grep -i 'Mn' ymn.txt
dheugfymnchdg
ymn

[root@ymn ~]# grep -E '^ymn' ymn.txt
ymn

[root@ymn ~]# grep -Ev '^ymn' ymn.txt
jhuwgfuedvfh
nihaiyigedahaoren
dheugfymnchdg
hahah
cnjdehfur
jvfrehgut
nihai
kcjfruiehf
vjirjei
vrgrt

1.1.5 more和less

作用 : 逐行或者逐頁顯示檔案內容

一般常用於大的文字檔案的檢視

1.2 檢索檔案

1.2.1 find

作用 : 通過關鍵字查詢對應的檔案

常用引數 :

引數 作用
-name 按照檔名查詢
-iname 忽略檔名的大小寫
-type 按照型別查詢
-size 按照大小查詢
-mtime 按照天數查詢
-mmin 按照分鐘查詢
# 查詢當前路徑下以.txt結尾的檔案,*是萬用字元
[root@ymn ~]# find ./ -name "*.txt"    #./可以不寫
./test.txt
./num.txt
./d1/res.txt
./ymn.txt

# 查詢當前路徑下所有的檔案
[root@ymn ~]# find ./ -type f
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.bash_history
./test.txt
./num.txt
./d1/res.txt
./ymn.txt
./.viminfo

# 查詢當前路徑下所有的目錄
[root@ymn ~]# find ./ -type d
.
./d1

# 查詢/etc/下大於5m的檔案
[root@ymn ~]# find /etc/ -type f -size +5M    #-5M是小於5m,5M是等於5m
/etc/udev/hwdb.bin
[root@ymn ~]# ls -lh /etc/udev/hwdb.bin
-r--r--r--. 1 root root 7.6M Nov 30 10:16 /etc/udev/hwdb.bin

# 查詢/etc/下7天以前的檔案
[root@ymn ~]# find /etc/ -type f -mtime +7
/etc/selinux/targeted/modules/active/README.migrated
/etc/firewalld/zones/public.xml
/etc/firewalld/zones/public.xml.old

# 查詢/etc/下7天以內的檔案
[root@ymn ~]# find /etc/ -type f -mtime -7
/etc/selinux/targeted/modules/active/README.migrated
/etc/firewalld/zones/public.xml
/etc/firewalld/zones/public.xml.old

# 查詢/etc/下2分鐘以內的檔案      一般用於檢測是否有新檔案產生
[root@ymn ~]# find /etc/ -type f -mmin -2

2. vim編輯器

linux作業系統下預設是沒有vim編輯器的,在有網路的情況下可以通過命令下載 , 安裝

yum install vim -y

2.1 什麼是vim

vim是linux系統下的一款編輯器,被稱之為上古神器,但是學會如何使用有一定的門檻,常常勸退一些自認為

自己很牛逼的點點程式設計師

2.2 vim可以幹什麼

vim可以擺脫滑鼠,只通過鍵盤就能編輯文字,學會並熟練使用vim可以十分高效的在linux系統下完成文字的編輯

那如何使用vim呢,我們來從他的三種模式下學習如何使用vim

2.3 vim三種模式

2.3.1 普通模式

vim 檔名(如果檔案不存在,會建立一個新檔案並開啟)

普通模式下只能移動游標是無法編輯文字的

普通模式下游標移動快捷鍵

快捷鍵 作用
G 將游標移動到文字最後一行
gg 將游標移動到文字第一行
0 將游標移到行頭
$ 將游標移到行尾
ctrl + ( 將游標移動到第一個字元位置
ctrl + ) 將游標移動到最後一個字元位置
n回車 將游標向下移到n行
ngg 將游標移動到第n行
h,j,k,l 左下上右

普通模特是下的複製,貼上,刪除

快捷鍵 作用
yy 複製當前行
nyy 複製n行
p 貼上
dd 刪除當前行
ndd 刪除n行
u          撤銷,類似windows的上一步
ctrl + r   取消撤銷操作
.          下一步之類的

2.3.2 編輯模式

快捷鍵 作用
i 在當前游標處插入文字
esc 退出編輯模式,回到命令列模式

2.3.3 命令列模式

快捷鍵 作用
:q 退出,不儲存
:q! 強制退出,不儲存
:wq 儲存並退出
:wq! 強制儲存並退出
:set nu 顯示行號
:set nonu 取消顯示行號