詳解grep和find命令
1、grep
grep 命令在乙個或多個檔案中查詢與指定模式匹配的字串。如果模式裡包含有空格,必須用引號括起來。grep的模式只能是乙個被引號括起來的字串或者是乙個單詞,後面緊跟著的引數都被當作檔名。grep命令把結果輸出到標準輸出上,並不改變被搜尋的原始檔。
grep pattern filename filename2 ...
-v 顯示不匹配的行
grep bugboy /etc/passwd
bugboy:x:500:500:yandingcheng:/home/bugboy:/bin/bash
grep在/etc/passwd檔案中查詢含有bugboy的每一行,如果找到就把該行輸出到標準輸出上,grep的退出狀態為0;如果沒找到,grep將不會輸出任何資訊,退出狀態為1;如果指定的檔案不存在,grep的退出狀態為2。
grep模式支援正規表示式,下面是一些常用的正規表示式匹配元字元。
x/ 匹配m到n個x,例如'o/',匹配2到5個為,即"oo","ooo","oooo","ooooo"。
bugboy:x:500:500:yandingcheng:/home/bugboy:/bin/bash
bugboy:x:500:500:yandingcheng:/home/bugboy:/bin/bash
bugboy:x:500:500:yandingcheng:/home/bugboy:/bin/bash
#include
char mystr[256];
printf("1: %s/n", mystr);
sscanf(str, "%s %s", key, value);
printf("key: %s, value: %s/n", key, value);
}const char *str = "i am bugboy";
2、find
find命令在檔案系統中查詢檔案
find [path ...] [option] [-exec | -ok | -print]
-print 將查詢到的檔案輸出到標準輸出。
這裡用到了乙個-name選項,是指按檔名查詢,後面我將會對它進行說明。
-newer file1 ! -newer file2 查詢更改時間比檔案file1新但比檔案file2舊的檔案。
-cpio 對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。
-mtime n 查詢系統中最後n*24小時被改變檔案資料的檔案
這裡省略掉了部份結果。
./tookit.c
./strsep.c
./auto/.deps/gnip.po
find命令與xargs命令相結合使用
在使用find命令的-exec選項處理匹配到的檔案時, find命令將所有匹配到的檔案一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是「引數列太長」或「引數列溢位」。這就是xargs命令的用處所在,特別是與find命令一起使用。
find命令把匹配到的檔案傳遞給xargs命令,而xargs命令每次只獲取一部分檔案而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分檔案,然後是下一批,並如此繼續下去。
在有些系統中,使用-exec選項會為處理每乙個匹配到的檔案而發起乙個相應的程序,並非將匹配到的檔案全部作為引數一次執行;這樣在有些情況下就會出現程序過多,系統效能下降的問題,因而效率不高;
而使用xargs命令則只有乙個程序。另外,在使用xargs命令時,究竟是一次獲取所有的引數,還是分批取得引數,以及每一次獲取引數的數目都會根據該命令的選項及系統核心中相應的可調引數來確定。
./test.c:7:static int get_netmask_len(const char *netmask)
3、which, whereis
/usr/bin/find
find: /usr/bin/find /usr/share/man/man1p/find.1p.gz /usr/share/man/man1/find.1.gz
which和whereis這兩個命令都可以接受多個引數作為查詢命令。
字串搜尋
include include include includeusing namespace std char grid 100 100 word 100 int n m int x int y int xx yy void search if k len int main int t cin t ...
字串搜尋
include include include includeusing namespace std char grid 100 100 word 100 int n m int x int y int xx yy void search if k len int main int t cin t ...
linux grep搜尋檔案中的字串
root localhost grep root etc group root x 0 root bin x 1 root,bin,daemon root localhost grep root etc group etc my.cnf etc group root x 0 root etc my....