• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2013年3月>
            242526272812
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            1,在某個路徑下查文件。

            在/etc下查找“*.log”的文件

            find /etc -name “*.log”

            2,擴展,列出某個路徑下所有文件,包括子目錄。

            find /etc -name “*”

            3,在某個路徑下查找所有包含“hello abcserver”字符串的文件。

            find /etc -name “*” | xargs grep “hello abcserver”

            或者find /etc -name “*” | xargs grep “hello abcserver” > ./cqtest.txt

            4,網上摘抄的幾個和查找文件或文件內容相關的命令詳說:

            正則表達式
            \分別表示單詞的開始和結束
            ex: \ 以T或者t開頭,om結尾的單詞
            正則表達式的元字符集:
            1) ^行首 /^love/ 以love開頭的行;
            2) $行尾 /love$/ 以love結尾的行;
            3) . /l..e/ 匹配所有這樣的行,字母l后面緊跟任意兩個字符然后是e的行
            4) * 重復0次或者任意多次前面字符
            5) [x-y] 字符范圍
            6) [^x-y] 排除字符范圍
            7) \ 轉義字符
             \ 界定單詞的開頭和結尾
            9) \( \) 標記后面用到的匹配字符 \(love\)able \1er=loveable lover
            10) x\{m,n\} 重復字符x至少m此,至多n次
            —————————————————————————
            —————————————————————————
            grep家族
            RE–regular expression; g: global; p: print
            出了上面10種元字符集,grep還支持下面的RE
            \w 字母或者數字
            \W 非單詞字符(標點符號)
            + 重復一個或者多個前面的字符
            | 或 love(a:b)表示lovea或者lobeb
            ?單個字符
            grep返回狀態值($?) 0表示成功,1表示失敗,2表示沒有找到文件
            rgrep遞歸訪問目錄樹
            —————————————————————————
            ls -l |grep ^d 顯示目錄
            grep -n -v -# -A# -B#
            -i 不區分大小寫
            -n 顯示匹配行和行號
            -v只顯示不匹配行
            -#顯示匹配行上下#行
            -A#匹配行后面打印#行
            -B#匹配行前面打印#行
            -c 只輸出匹配行的行數
            -h 查詢多文件的時候不顯示匹配的文件名字
            -l 查詢多文件只顯示匹配的文件名
            -s 不顯示錯誤信息
            grep與正則表達式同用
            grep “^[^abc]” *.f 提取行首不是abc的行
            grep “[0-9]\{3\}[8]” *.f 提取類似xxx8的行,x表示任意數字
            grep “a\{2\}” *.f 顯示a至少出現兩次的行,注意grep是以行處理單位的
            grep -n “^$” file 列出空行的行號
            -E參數,可以使用”與”和”或”模式
            grep -E “abc | def” *.f 顯示包含abc或者def的行
            ex:
            ls -l | grep “^$” 顯示目錄
            ls -l | grep “^d” 顯示文件
            ls -l | grep “^d..x..x..x” 顯示特定權限的目錄
            ps aux | grep “httpd” |grep -v “grep”
            —————————————————————————
            —————————————————————————
            **使用find和xargs
            1. find pathname -options [-print -exec -ok]
            -optinos
            1)-name:按照文件名查找
            find ~ -name “*.txt” -print
            find ~ -name “[a-z][0-9].txt” -print
            2)-perm:按照權限查找文件
            find ~ -perm 755 -print 查找權限為755的文件
            find ~ -perm 007 -print 查找o位置上具有7權限的文件
            find ~ -perm 4000 -print 查找具有suid的文件
            3)-prune
            不在當前目錄下查找
            4)-user和-nouser
            find ~ -user zhao -print 查找文件屬主是zhao的文件
            find ~ -nouser -print 查找文件屬主已經被刪除的文件
            5)-group和-nogroup
            find ~ -group zhao -print 查找文件群組是zhao的文件
            6)按照時間
            find ~ -mtime -5 -print 文件更改時間在5天內的文件
            find ~ -mtime +3 -print 文件更改時間在3天前的文件
            find ~ -newer file1 -print 查找比文件file1新的文件
            7)按照類型查找
            find ~ -type d -print 查找所有目錄
            8)按照大小
            find ~ -size +1000000C -print 查找文件大小大于1000000字節(1M)的文件
            9)查找位于本文件系統里面的文件
            find / -name “*.txt” -mount -print
            -exec,-ok:find命令對于匹配文件執行該參數所給出shell命令,相應命令形式為: ‘command’ {} \;
            -ok 在執行命令前要確認
            find ~ -type f -exec ls -l {} \;
            find / -name “*.log” -mtime +5 -ok rm {} \;
            find . -name core -exec rm {} \;
            使用-x dev參數
            防止find搜索其他分區
            find . -size 0 -exec rm {} \;
            刪除尺寸為0的文件
            2. xargs與-exec功能類似
            find ~ -type f | xargs ls -l
            find / -name “*.log” -type f -print| xargs grep -i DB0
            find . -type f |xargs grep -i “Mary”
            在所有文件中檢索字符串Mary
            ls *~ |xargs rm -rf
            刪除所有以~結尾的文件
            —————————————————————————
            —————————————————————————
            SED:
            =====
            sed [options] sedcommand inputfile >outputfile
            sed不接觸初始輸入文件,對其不做修改,若想保存改動,重要將輸出重定向到一個文件即可
            a\: 當前行后面加入一行或者文本
            c\: 用信文本替換本行的文本
            d: 刪除一行
            D: 刪除模板塊的第一行
            i\: 在當前行上面插入文本
            h: 拷貝模板塊的內容到內存緩沖區
            H: 追加模板塊的內容到內存緩沖區
            g: 獲得內存緩沖區內容,并替換當前模板中的文本
            G: 獲得內存緩沖區內容,并追加到當前模版塊文本的后面
            n: 讀取下一個輸入行,用下一個命令處理新行而不是第一個命令
            N: 追加下一個輸入行到模版塊后面,并在二者間插入一個新行,改變當前行的號碼
            p: 打印模板塊的行
            P: 打印模板塊的地一行
            q: 退出sed
            r file: 從file中讀行
            !: 表示后面的命令對所有沒有選中的行起作用
            s/re/strint/: 用string替換正則表達式re
            =: 打印當前行號
            #command: 把注釋擴展到下一個換行符號前
            l 打印匹配行,包括顯示控制符號
            **替換標記
            g: 行內全部替換
            p: 打印行
            w: 把行寫入一個文件
            x: 互換模板塊和緩沖區中的文本
            y: 把一個字符翻譯成另外一個字符
            **sed中元字符可以使用正則表達式中所有的
            新加:
            & 保存搜索字符 s/love/**&**/ 用**love**代替love
            **sed定位文本的方式
            x 行號
            x-y 從x行到y行
            /patern/ 查詢包括patern的行
            x,y! 不包括指定x-y行號的行
            ex:
            sed ‘/Tom/d’ file
            刪除包含Tom的行;
            sed ‘/Tom/!d’ file
            刪除所有不包含Tom的行;
            sed -n /north/p’ file
            打印包含north的行;
            sed ‘3d’ file
            刪除第三行;
            sed ’3,$d’ file
            刪除第三行到最后一行;
            sed ‘$d’ file
            刪除最后一行;
            sed ‘/north/d’ file
            刪除包含north的行;
            sed -n ‘s/west/north/g’ file
            替換所有west為north;
            sed -n ‘s/^west/north/p’ file
            一行的開頭的west用north替換,并打印發生替換的行;
            sed ‘s/[0-9][0-9]$/&.5/’ file
            所有以兩個數字結尾的行,最后兩個數字被他們自己替換并附加.5;
            sed -n ‘s/\(Mar\)got/\1ianne/p’ file
            將Margot替換為Marianne,并打印發生替換的行;
            sed ‘s#abc#ABC#g’ file
            所有abc由ABC替換,(所有s后面緊跟的字符都被認為是新的分隔符);
            sed ‘/west/,/east/p’ file
            打印包含west行和包含east行中間的所有行;
            sed ’1,/east/s/$/**A**/’ file
            地一行和包含east行之間的所有行的行尾加上字符串**A**;
            sed -e ’1,3d’ -e ‘s/aa/bb/’ file
            先刪除1到3行,然后用bb替換aa;
            sed ‘/Sam/r file1′ file
            將文件file1中的內容附加在包含Sam的行后面;
            sed ‘/Sam/w file1′ file
            將還有Sam行寫入文件file1中;
            sed ‘/^north /a\new line second line’ file
            所有以north加空格開頭的行后面附加上兩行文本,a\表示追加文本,\表示換行(tcsh中需要,bash中不需要);
            sed ‘/^north/i\new line’ file
            在行首為north的行前面插入一個新行;
            sed ‘/norht/{n; s/aa/bb/;}’ file
            首先匹配含有north的行,然后執行一組命令,n表示移到下一行,并用bb代替aa;
            sed ’1,3g/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/’ file
            將1到3行中的所有小寫字母用大寫字母替換;
            sed ‘/Lewis/{s/Lewis/bbb;q;}’ file
            首先找到匹配Lewis的行,然后用bbb代替Lewis,接著q退出seq;
            sed -e ‘/north/h’ -e ‘$G’ file
            首先找到包含norht的行,h拷貝到內存緩沖區,然后到文件隨后一行($),G附加在最后一行后面;
            sed -e ‘/we/{h;d;}’ -e ‘/ct/{G:}’ file
            查找包含we的行,拷貝并且刪除他,然后查找包含ct的行,將拷貝內容附加到他后面;
            sed -e ‘/north/h’ -e ‘$g’ file
            首先找到包含norht的行,h拷貝到內存緩沖區,然后到文件隨后一行并覆蓋他;
            sed -n ‘l’ file
            打印所有包含不能打印字符的行。
            sed -n ‘/.*ing/p’ file
            顯示含有以ing結尾單詞的行;
            sed -n ‘/music/=’ file
            打印含有music的行號;
            sed ‘^$d’ file
            刪除空行
            sed ‘s/^/abcd/g’ file
            在行首填加abcd
            sed ‘s/$/abcd/g’ file
            在行尾填加abcd
            sed ‘s/rm$/played &/g’ file
            &表示在替換的時候保留被替換的詞(rm–played rm)
            sed ‘s/^M//g’ file
            去掉行尾的^M (^M的輸入,先按ctrl+v然后按enter即可即可)
            —————————————————————————
            —————————————————————————
            gawk程序:
            awk [-F 域分隔符] ‘commands’ inputfile
            awk執行時,其域標志符為$1,$2,$3………$n,$0表示所有的域
            awk -v var=value 賦值給一個用戶定義的變量
            awk ‘pattern’ file
            awk ‘{action}’ file
            awk ‘pattern {action}’ file
            ex:
            awk ‘{print $0}’ file
            打印所有的域
            awk ‘/Mary/’ file
            打印包含file中包含Mary的行;
            awk ‘{print $1}’ file
            打印文件的第一列(第一個域);
            awk ‘/Mary/ {print $1,$2}’ file
            打印文件file包含Mary的行的第一和第二個域;
            df | awk ‘S4>75000′
            打印可用空間大于75000的文件系統
            date | awk ‘{print ” month:”, $2, “\n year:” $6}’
            格式化date的輸出;
            awk ‘BEGIN{OFMT=”%.2f”; print 1.25463}’
            指定數字輸出格式,小數點后面保留兩位有效數(1.25);
            awk ‘/[ab]cdef/’ file
            打印匹配acdef或者bcdef的行;
            awk ‘{print NR, $0}’ file
            awk ‘{print $0, NR}’ file
            NR當前記錄數,每處理一個記錄NR就加1
            上面的命令相當于在每一行后面加上一個行號;
            NF則記錄每一行的域的個數;
            awk -F ‘[ :\t]‘ ‘{print $0}’ file
            指定域分隔符為空格、:或者tab
            awk ‘/^[A-Z][a-z]+/’ file
            打印所有以一個大寫字母開頭,然后是一個或者多個小寫字母的行;
            awk ‘$1~/[Bb]ill/’ file
            第一個域匹配Bill或者bill的行;
            awk ‘$1!~/ly$/’ file
            第一個域末尾不是ly的行;
            awk ‘/^(No|no)/’ file
            打印行首為No或者no的行;
            awk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ file
            awk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ file |tee out.file
            打印文件的時候附加一個文件頭
            awk ‘BEGIN {print “file head \n”} {print $1 \t $4} END {print “end of file”}’ file
            打印文件的時候附加一個文件頭和文件尾
            awk中使用正則表達式
            awk ‘{if($1~/hello/) print $0}’ file
            如果域1中包含hello,就打印所有的域
            ~//表示匹配正則表達式,!~//表示不匹配正則表達式
            awk ‘{if($6,>=,==,!=,~,!~(匹配,不匹配)
            awk ‘$3==5346′ file
            第三個域等于5346,就打印出該行;
            awk ‘$3>5000 {print $1}’ file
            第三個域大于5000就打印該行第一個域
            awk ‘{max={$1>$2}?$1:$2; print max}’ file
            如果第一個域大于第二個域,max=$1否則=$2,打印最大值
            awk ‘{print ($1==11?”high\t” $2:”low\t” $2)}’ file
            &&邏輯和,||邏輯或,!邏輯非
            awk ‘$2==$5 && $3>5′ file
            awk ‘/Tom/,/Jary/’ file
            Tom第一次出現和Jary第一次出現之間的所有行;
            awk ‘/north/ {print $3+10}’ file
            包含north行的地三個域加10;
            awk ‘$3==”aa” {$2=”dd”; print $0}’ file
            將地三個域為aa的行的第二域變成dd,并打印該行;
            **awk編程:
            使用變量
            awk ‘$1~/Tom/ {wage=$2+$3; print wage}’ file
            先掃描第一個域,如果匹配Tom,就將第二和第三域的總和賦值給變量wage并輸出;
            awk ‘BEGIN{FS=”:”; OFS=”\t”;ORS=”\n\n”}{print $0}’ file
            處理文件前設置
            域分隔符(FS)為(:)
            輸出域分隔(OFS)為(\t)
            輸出記錄分隔符(ORS)為(\n\n)
            awk ‘END{print “The number of record is:’ NR}’ file
            處理完文件后執行END語句
            輸出總記錄數
            awk ‘/Mary/{count++} END{print “Mary was found” count “times”}’ file
            計數文件中Mary出現的次數;
            **awk輸入輸出重定向
            awk ‘$4>=70 {print $1, $2 >”outfile”}’ file
            結果重定向到文件outfile中
            awk ‘BEGIN{“date” |getline d; print d}’
            將date結果輸給getline函數,并打印
            (getline從標準輸出,管道等獲得輸入)
            awk ‘BEGIN{“date” |getline d; split(d,mon); print mon[1] mon[2]}’
            將date結果輸給getline函數,slpit將d分解成數組,打印數組第2個變量
            **split函數:split(string,array,field seperator)
            awk ‘BEGIN{while(“ls”|getline) print}’
            依次輸出ls的每一項
            awk
            ‘BEGIN{print “what is your name?”; getline name 0) {lc++; print lc ” ” a}}’
            awk ‘BEGIN{while(getline a 0) {lc++; print lc}}’
            如果文件不存在,getline返回-1
            到達文件尾返回0
            讀到一行返回1
            讀取文件/etc/passwd,計數行數
            **awk控制語句
            if語句:
            awk ‘{if($6>50) print $1 “too high”}’ file
            awk ‘{if($6>20 && $250}{x++; print x} else {y++;print y}’ file
            awk ‘{if($1~/peter/){next} else {print}}’ file
            如果第一個域包含peter,awk就忽略這一行,讀取文件的下一行,腳本從頭開始執行;
            循環語句:
            awk ‘{i=1; while(i file
            cat -v file 顯示文件,包括其中的控制符(-v)
            cat -n file 為每一行編號
            cat -b file 每個非空行編號
            cat -T file 以^I顯示tab
            3.
            管道 | 把一個命令的輸出傳遞給另外一個命令為輸入
            ex:
            ls | grep file.doc
            查找文件file.doc
            who | awk ‘{print $1 “\t” $2}’ 只顯示用戶名和所在終端
            df -h | awk ‘{print $1}’ |grep -v “filesystem” (-v表示輸出不包括filesystem的項目)
            df -h | awk ‘{print $1}’ |grep -v “filesystem” |sed ‘s/\/dev\///g’ 顯示設備的時候不顯示/dev/
            4.tee
            who | tee who.txt 輸出到屏幕的同時輸出到文件
            who | tee -a who.txt 附加在文件的后面
            5.文件重定向
            ls -l |grep ^d >file.out 所有目錄名字重定向到一個文件
            cat /etc/passwd | awk -F: ‘{print $1}’ |sort >a.out (-F:指定分隔符為:)
            cat >file.out reboot
            at> ctrl+D
            3小時后reboot
            3.
            bc – 計算器
            scale=3 設置小數點后數字為數
            ibase=2 二進制運算
            4.
            ls -d dir
            只顯示目錄而不顯示其下面的文件。
            5.
            sync
            更新superblock并把它寫入硬盤
            6.
            scp user@host:/path/file1 user@host:/path/file
            服務器間拷貝文件

            ****************************************************************************************
            當我們要查找文件中某些內容,或者在顯示文件名時過濾出某一種類的文件,這時就需要用到grep。因為支持正則表達式,使得grep命令的搜索功能非常強大,它是使用好linux必須掌握的一個命令。


            一、常用命令
            grep  999  **/* 列出當前目錄(包括子目錄)中所有含有999字符的行。
            grep  '999'  server.log 列出server.log中含有999字符的行。將999去掉引號或換成雙引號,效果一樣。
            grep  -c  '999'  server*     統計所有以server開頭的文件中,含有999字符的行數(注:不是個數)
            grep  '999'  aa.txt  bb.txt  cc.txt 顯示aa.txt, bb.txt, cc.txt三文件中含有999字符的行。
            grep  '[a-z]\{5\}'  server.log 利用正則表達式來搜索文件。正則表達式的詳細說明見后面。
            grep '2006-08-23 17:50:[0-1][0-9]' wxxr.boss.log 搜索某日某分00秒到19秒之間的日志
            ls | grep 'server' 這里是在通道里來使用grep,將ls顯示的文件名,過濾出含有server字符的文件名。


            二、參數
            -2      匹配行上下2行也顯示出來
            -b      在行之前顯示此行所在的字符號(字符號指:在此之前字符的字符數)
            -c      匹配行的行數
            -f      從某文件中提取要匹配的字符,如:grep  -f  abc  server.log從abc文件中提取要搜索的字符
              (注:abc中可以有多行,每行是"或"的關系,即列出各行字符所匹配的內容。所有匹配行按照其在文件中的順序顯示,即不按abc中的匹配字符來分類顯示)
            -h      當搜索多個文件時,不顯示每行之前的文件名前綴。
            -i       忽略搜索字符的大小寫
            -l       顯示匹配搜索字符的文件的文件名
            -L      顯示不匹配搜索字符的文件的文件名
            -n      在每行前加上行號
            -s      不顯示關于不存在或者無法讀取文件的錯誤信息。
            -v      顯示所有不匹配的行。
            -w     把搜索字符當作一個完整單詞來匹配


            三、正則表達式
            ^jboss      匹配所有以jboss開頭的行 
            jboss$      匹配所有以jboss結尾的行
            jbo.s        .表示任意一字符,匹配jboss, jbo7s,不匹配jbos。 
            jbo*s       *表示0或多個的前一字符,匹配jbs, jbos, jboos, jboooos
            jbo[sa]s    [] 指定字符范圍,匹配jboss, jboas
            jbo[^sb]s  [^]指定不允許匹配的字符范圍,不匹配jboss, jbobs
            x\{2\}       匹配2個x字符,即匹配字符xx 
            x\{2,\}      至少匹配2個x字符
            x\{2,4\}    匹配2-4個x
            \w             匹配文字和數字字符,和[A-Za-z0-9]等價
            \W            與\w相反,匹配一個或多個非文字和非數字字符,如點號句號等。
            \bjboss      匹配單詞,如jboss, jboss888,但不匹配8jboss。也就是jboss之前必須是空格或逗句號等。
            [0-9]{11}  11個數字

            四、egrep(等價于grep -E)擴展支持的正則表達式
            c+      匹配一個或多個c字符。[a-c]+,則匹配一個或多個a或b或c字符。
            c?      匹配零個或多個c字符
            a|b     匹配a或b
            ()      分組符號,作用類似算術里的()
            x{2},x{2,},x{2,4}       作用等同于沒有用-E參數時的x\{2\},x\{2,\},x\{2,4\}



            五、fgrep(等價于grep -F)
            當搜索字符里包含有正則表達式的專用符號,然而我們卻不想啟用正則表達式,就是搜索原字符,這時就可以用grep -F。例:grep  -F  'jbo[^sb]s'  server.log ,搜索server.log里包含'jbo[^sb]s的字符(^[]不再是正則表達式里的專用字符)


            六、其他
            和其他命令相結合,可把grep用作一個過濾器。比如我們監控日志時,我們只關心某一個包下的日志,這時我們可以這樣來寫:tail  -f  server.log | grep 'com.wxxr.chengang'
            posted on 2013-06-07 15:16 聶文龍 閱讀(4826) 評論(0)  編輯 收藏 引用 所屬分類: Linux
            国产亚洲精品自在久久| 97久久香蕉国产线看观看| 草草久久久无码国产专区| 久久精品免费一区二区三区| 国产AⅤ精品一区二区三区久久| 久久本道久久综合伊人| 亚洲欧美日韩精品久久亚洲区 | 狠狠色丁香久久婷婷综合_中| 噜噜噜色噜噜噜久久| 人妻无码中文久久久久专区| 99久久亚洲综合精品网站| 日韩亚洲国产综合久久久| 国产精品久久久久久久| 四虎影视久久久免费观看| 久久久精品人妻一区二区三区蜜桃 | 武侠古典久久婷婷狼人伊人| 亚洲成色www久久网站夜月| 久久久久久久综合日本| 国产精品99精品久久免费| 久久久一本精品99久久精品88| 精品免费tv久久久久久久| 97久久国产综合精品女不卡| 精品久久久久久无码中文野结衣| 久久午夜伦鲁片免费无码| 伊人久久大香线蕉成人| 日韩久久久久中文字幕人妻| 91久久精品国产91性色也| 潮喷大喷水系列无码久久精品| 久久综合精品国产一区二区三区| 亚洲国产成人久久精品影视| 99精品久久久久中文字幕| 人妻无码中文久久久久专区| 亚洲va久久久噜噜噜久久天堂 | 97久久精品人人澡人人爽| 久久精品亚洲一区二区三区浴池 | 亚洲欧美成人久久综合中文网 | 国产免费久久精品丫丫| 大香网伊人久久综合网2020| 超级碰久久免费公开视频| 9999国产精品欧美久久久久久| 久久免费线看线看|