免费人成网站视频在线观看国内,久视频精品线在线观看,人妻激情偷乱频一区二区三区,国产 字幕 制服 中文 在线

Linux命令實(shí)例參考手冊,第四章 文件比較及文件查找命令_云主機和虛擬主機_奇迪科技(深圳)有限公司(m.cheanjie.com)

歡迎來(lái)到奇迪科技(深圳)有限公司,超值服務(wù)提供卓越產(chǎn)品!

云主機和虛擬主機

Linux命令實(shí)例參考手冊,第四章 文件比較及文件查找命令

作者:admin 來(lái)源: 更新時(shí)間:2015-02-02

4  文件比較及文件查找命令

比較文件——cmp

cmp命令語(yǔ)法:

cmp [參數] [文件1] [文件2] [skip1 [skip2]]

實(shí)例1:比較兩個(gè)文件是否相同,并在屏幕上打印結果。

假設在當前目錄和/var一個(gè)同名的文件aaa,通過(guò)ll命令可以查看其大小、訪(fǎng)問(wèn)權限、最后修改時(shí)間等屬性簡(jiǎn)單判斷其是否為同一文件。也可以利用cmp查看其內容是否完全相同。在命令提示符下輸入:

[root@localhost ~]#cmp aaa /var/aaa

實(shí)例2:比較兩個(gè)文件是否相同,并顯示不同點(diǎn)的詳細信息。

假設當前目錄下有兩個(gè)文件aaabbb,為了便于查看比較結果,兩個(gè)文件的內容都非常簡(jiǎn)單。在命令提示符下輸入:

[root@localhost ~]#cmp -l aaa bbb

實(shí)例3:分別從aaa的第15個(gè)字節和bbb的第16個(gè)字節開(kāi)始比較兩個(gè)文件。

在命令提示符下輸入:

[root@localhost ~]#cmp -l aaa bbb 15 16

15,1610進(jìn)制)

比較文件——comm

comm命令語(yǔ)法:

comm [參數] 文件1 文件2 [>|>>文件名]

實(shí)例1:假設當前目錄下有兩個(gè)文件aaa、bbb,判斷兩個(gè)文件是否相同。

若兩個(gè)文件相同,則只輸出第3列的內容,第1,2列的內容為空。否則,表示兩個(gè)文件不同,若第3列的內容為空則表示兩個(gè)文件沒(méi)有任何相同之處。在命令提示符下輸入:

[root@localhost ~]#comm aaa bbb

實(shí)例2:比較兩個(gè)文件的內容,只顯示在兩個(gè)文件中共同存在的行。

假設當前目錄下有一file1.aa文件如下:

#include<stdio.h>

int main(int argc,char*argv[]){

int  a=3,b=4;

printf(“a+b=”,a+b);

return 0;

}

文件file2.aa的內容如下:

#include<stdio.h>

int main(int argc,char*argv[]){

int  a=6,b=10;

printf(“a+b=”,a+b);

return 0;

}

為了便于查看結果是否正確,通常在比較大的文件的時(shí)候,comm提供了方便快捷的方法。在命令提示符下輸入:

[root@localhost ~]#comm -12 file1.aa file2.aa

查找文件——find

find命令語(yǔ)法:

find [搜索目錄…] [參數] [表達式] [動(dòng)作選項] find [-path<模式>] [參數] [表達式] [動(dòng)作選項]

實(shí)例1:根據文件名字查找文件。

假設要在服務(wù)器上配置ftp服務(wù)器,但是不確定關(guān)于ftp服務(wù)器配置文件的具體位置,另外,由于知道在Linux下關(guān)于服務(wù)器的配置文件都在/etc目錄下,因此,可以借助find命令查看ftp服務(wù)器配置信息的具體位置。因此,在命令提示符下輸入以下命令:

[root@localhost ~]#find /etc -name ftp *

(其中/為查找目錄)

實(shí)例2:根據文件的大小查找文件。

若用戶(hù)不清楚文件的名字,可以利用-size<n>指定文件的大?。?/span>

[root@localhost ~]#find ./ -size  1000c

其中c表示要查找的文件的大小是以字節為單位。

[root@localhost ~]#find ./ -size  +1000c

查找大于1 000字節的文件。

[root@localhost ~]#find ./ -size  -1000c

查找小于1 000字節的文件。

[root@localhost ~]#find ./ -size  +1000c -and -2000c

查找介于1 000字節和2 000字節之間的文件。

對于比較大的文件,為了便于用戶(hù)在命令行輸入,文件大小的度量單位可以采用kb甚至MG。

實(shí)例3:根據文件的屬性查找文件。

下面一組命令,主要是根據文件的時(shí)間屬性和屬主/字節組來(lái)查找文件,很容易理解,讀者可以自行在本機上操練。

[root@localhost ~]#find ./ -amin -10

查找當前目錄下最后10分鐘訪(fǎng)問(wèn)的文件。

[root@localhost ~]#find./ -atime  -2

查找當前目錄下最后48小時(shí)訪(fǎng)問(wèn)的文件。

[root@localhost ~]#find ./ -empty

查找當前目錄下為空的文件或者文件夾。

[root@localhost ~]#find ./ -group user1

查找當前目錄下屬組為user1的文件。

[root@localhost ~]#find / -mmin -5

查找當前目錄下最后5分鐘里修改過(guò)的文件。

[root@localhost ~]#find ./ -mtime -1

查找當前目錄下最后24小時(shí)里修改過(guò)的文件。

[root@localhost ~]#find ./ -nouser

查找當前目錄下屬于作廢用戶(hù)的文件。

[root@localhost ~]#find ./ -user  user1

查找當前目錄下屬于user1這個(gè)用戶(hù)的文件。

[root@localhost ~]#find ./ -perm 664

查找當前目錄下允許屬主/屬組可讀寫(xiě)的,其他用戶(hù)只可讀的文件)

實(shí)例4:利用綜合屬性查找文件。

上述的命令只是根據一個(gè)具體的屬性(文件名或大小等)來(lái)查找文件,查找結果大部分都不是用戶(hù)需求的文件。若用戶(hù)對要查找的文件提供更多的信息,則find的輸出結果就越符合用戶(hù)的需求。

這需要借助邏輯操作選項,find支持的邏輯的操作分別有:邏輯與(-a-and)、邏輯或(-o-or)、非(-!);操作規則和C語(yǔ)言中的相對應的操作一致。-a查找同時(shí)符合多個(gè)條件的文件,-o查找符合任何一個(gè)條件的文件,-!表示不符號條件的文件。

當使用很多的邏輯選項時(shí),可以用括號把這些選項括起來(lái)。為了避免Shell本身對括號引起誤解,在話(huà)號前需要加轉義字符“”轉義字符來(lái)去除括號的意義。

在命令提示符下輸入:

[root@localhost ~]#find ./ -size +1000c -and -mtime +3 -and -name abc*

查找到同時(shí)符合3個(gè)條件的文件。

[root@localhost ~]#find ./ -size +1000c -or -mtime +3

查找到符合任何一個(gè)條件的文件。

[root@localhost ~]#find ./ -!(-size +1000c -or -mtime +3)

查找非大于1 000字和最近48小時(shí)修改的文件。

實(shí)例5:查看當前目錄下所有文件的類(lèi)型。

在命令提示符下輸入:

[root@localhost ~]#find ./ -exec  file  {} ;

利用find命令的-exec選項可以對查找的文件執行相應的操作,一般用于文件的批處理。注意-exec在命令行書(shū)寫(xiě)中的“;”做為一個(gè)獨立的部分,因此必須和前面的“}”用空格或Tab鍵間隔。

查找文件——whereis

whereis命令語(yǔ)法:

whereis [參數] [文件…]

實(shí)例1:查看系統是否有ls、cp命令。

在命令提示符下輸入:

[root@localhost ~]#whereis -b ls cp

[root@localhost ~]#whereis  -B /bin /sbin -f ls  cp

實(shí)例2:查看/usr/bin目錄下沒(méi)有在/usr/share/ma/man1說(shuō)明的文件;有對應的源程序在/usr/src目錄下的所有文件。

根據各選項的含義,在命令提示符下輸入:

[root@localhost ~]#cd /usr/bin

[root@localhost ~]#whereis -u -M /usr/man/man1 -S /usr/src -f * |tail

實(shí)例3:在當前目錄下,查找沒(méi)有文檔說(shuō)明的所有文件。

在命令提示符下輸入:

[root@localhost ~]#whereis -m -u  *

 

查找文件——locate

locate命令語(yǔ)法:

locate [參數] [字符串或模式…]

實(shí)例1:查找用戶(hù)創(chuàng )建的文件hhwork。

在命令提示符下輸入:

[root@localhost ~]#locate hhwork

實(shí)例2:查看ftp服務(wù)器的配置文件。

在命令提示符下輸入:

[root@localhost ~]#locate ftp | grep etc | grep conf

查找文件——which

which命令語(yǔ)法:

which [文件名…]

實(shí)例:查看系統中是否安裝c/c++編譯器。

經(jīng)常在編寫(xiě)程序后,利用gcc來(lái)編譯文件的時(shí)候,總是提示命令找不到的提示信息,可以利用which命令查看是否安裝c/c++編譯器。在命令提示符下輸入以下命令。

[root@localhost ~]#which gcc g++

 

搜索文件中的字符串——grep

grep命令語(yǔ)法:

grep [參數] [字符串或正則表達式][文件名…]

實(shí)例1grep命令過(guò)濾ls –l的顯示內容。

長(cháng)格式顯示文件是以多個(gè)字段顯示,第一個(gè)字段顯示該文件的類(lèi)型和訪(fǎng)問(wèn)權限。如果只顯示當前目錄下的目錄文件,則需要將顯示結果進(jìn)行過(guò)濾,只顯示以d開(kāi)頭的行;反之,則顯示非d字母開(kāi)頭的行。

grep一般用于將指定的目標文件過(guò)濾顯示,現在需要將ls –l的顯示結果過(guò)濾,因此需要借助管道命令(|)來(lái)顯示,在命令提示符下輸入:

[root@localhost ~]#ls -l | grep ^d

只顯示當前目錄下的目錄文件。

[root@localhost ~]#ls -l | grep ^[^d]

顯示當前目錄下的除目錄文件以為的文件。

[root@localhost ~]#ls –l |grep -i  april

只顯示當前目錄下四月份創(chuàng )建的文件。

實(shí)例2:顯示指定進(jìn)程的信息。

ps -ef顯示所有進(jìn)程的簡(jiǎn)單信息。對于龐大的輸出結果,用戶(hù)可以借助more命令分屏顯示。如果用戶(hù)只關(guān)心其中的某個(gè)進(jìn)程或某些進(jìn)程,則可借助grep對輸出結果進(jìn)行過(guò)濾,顯示用戶(hù)關(guān)心的行。假設只顯示sshd進(jìn)程的情況,在shell提示符下輸入:

[root@localhost ~]#ps –ef | grep sshd

顯然只顯示含有sshd的行,由于正在執行的grep命令含有“sshd”,因此也顯示grep 進(jìn)程,在shell提示符下再次輸入:

[root@localhost ~]#ps –ef | grep sshd | grep -v grep

實(shí)例3:顯示除根用戶(hù)外其他登陸本機的用戶(hù)。

本例子可以利用grep命令將who的輸出結果進(jìn)行過(guò)濾,只需要在命令提示符下輸入:

[root@localhost ~]#who | grep –v root

實(shí)例4:查詢(xún)用戶(hù)ddf和組ddf的信息。

由于要查詢(xún)用戶(hù)/組“ddf”的信息,根據帳戶(hù)文件(/etc/passwd)和組文件(/etc/group)的組織結構,則搜索etc/passwd/etc/group中包含“ddf”的行。因此在命令提示符下輸入:

[root@localhost ~]#grep -n ddf /etc/passwd /etc/group

實(shí)例5:查詢(xún)目標文件中特定的字符串。

假設當前目錄下有一文件aaa,搜索該文件中包含“hello”的行,由于要匹配的字符串包含空格,因此在命令行中必須將其用引號括起來(lái),避免shell把其當作獨立的參數來(lái)處理而產(chǎn)生錯誤,需要在命令提示符下輸入以下命令:

[root@localhost ~]#grep -n hello aaa

實(shí)例6grep搜索文本最常用的例子就是查詢(xún)結構化的文件,比如一個(gè)通訊簿(address),假設存在于當前目錄,包含名字字段、聯(lián)系方式、地址。搜索聯(lián)通用戶(hù)的詳細信息。

在命令提示符下輸入:

[root@localhost ~]#grep “ 13[0-2]” address

查找的字符串以一個(gè)空格開(kāi)始。需要注意的是由于要求查詢(xún)聯(lián)通用戶(hù)的信息,不僅僅是單純的查詢(xún)包含“13[0-2]”的行,必須是以13[0-2]開(kāi)始的單個(gè)字段,即13[0-2]前是一個(gè)空格。

實(shí)例7:仍然對通訊錄address執行操作,查詢(xún)所有以s開(kāi)頭用戶(hù)的聯(lián)系方式。

在命令提示符下輸入:

[root@localhost ~]#grep -in ^s address

搜索文件中的字符串——egrep

egrep命令語(yǔ)法:

egrep [參數] [字符串或正則表達式] [文件名…]

實(shí)例:egrep命令實(shí)現多個(gè)字符串匹配,搜索addresssimonwxp的用戶(hù)的信息。

利用grep命令不能同時(shí)指定兩個(gè)固定的字符串,但是字符串“simon”和“wxp”似乎沒(méi)有任何關(guān)系,所以很難用一個(gè)正則表達式來(lái)表示,若利用grep命令只能依次查看兩個(gè)用戶(hù)的信息。但是egrep擴展集中的“|”可以書(shū)寫(xiě)該正則表達式,在shell提示符下輸入:

[root@localhost ~]#egrep “sxx|lhw” address

用引號正則表達式用引號括起來(lái)。

egrepgrep兩者在執行速度上比grep相對較快,但是其功能相對有限,而egrep由于對正則表達式擴展集的支持但是速度相對較慢。


本文版權所有,轉載須注明:來(lái)源  http://m.cheanjie.com/qvdv-zhuji-768.html