litin@linuxservice:~/android/allwinner/cqa64_android_v5.1/android/device$ grep "/proc/sys/kernel/printk" . -rn
grep: ./softwinner/tulip-common/.git/svn: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/logs: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/objects: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/hooks: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/rr-cache: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/description: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/config: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/refs: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/info: 沒有那個檔案或目錄
grep: ./softwinner/tulip-common/.git/packed-refs: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/svn: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/logs: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/objects: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/hooks: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/rr-cache: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/description: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/config: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/refs: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/info: 沒有那個檔案或目錄
grep: ./softwinner/common/.git/packed-refs: 沒有那個檔案或目錄
./softwinner/tulip-t1/init.sun50iw1p1.rc:51: write /proc/sys/kernel/printk 0
grep: ./softwinner/tulip-t1/.git/svn: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/logs: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/objects: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/hooks: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/rr-cache: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/description: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/config: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/refs: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/info: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1/.git/packed-refs: 沒有那個檔案或目錄
./softwinner/tulip-t1_v1/init.sun50iw1p1.rc:51: write /proc/sys/kernel/printk 0
grep: ./softwinner/tulip-t1_v1/.git/svn: 沒有那個檔案或目錄
grep: ./softwinner/tulip-t1_v1/.git/logs: 沒有那個檔案或目錄
雖然help中說「--exclude」可以忽略檔案和目錄,可是實際測試中發現並不能忽略目錄。所以,要排除目錄,還得用「--exclude-dir」
例如:
grep -rn --exclude-dir=build_* --exclude-dir=kernel --exclude-dir=drivers --exclude=*.out 'abcdefg' .在當前目錄下查詢所有「abcdefg」的字串,但不在以「build_」開頭的目錄、「kernel」和「dirvers」中查詢,同時忽略所有以「out」為字尾的檔案。grep --exclude-dir=".svn" u_boot_cmd * -nr --exclude="cscope.out" --exclude="tags"
grep簡介(熟悉的同學可以直接省略這一部分):
全稱是global search regular expression_r(re) and print out the line,即全文搜尋正規表示式,並把匹配的結果列印出來,是linux下非常強大的文字搜尋工具。
因為是命令列工具,它可以靈活地指定匹配模式、選項和要匹配的目標檔案,如果結合linux下特有的管道命令" | ",其功能要比windows自帶的搜尋工具和一些windows下文字編輯器強大很多。
由於工作要求在linux環境下進行c++開發,接觸linux時間尚淺,沒有遇到一款功能較為齊全且較為順手的ide,因此檢視源**時很多功能需要手動在bash下完成,比如常常需要檢視乙個函式在整個原始碼庫中的呼叫情況:
grep -r 'function_name' *
(*表示當前目錄下所有檔案,-r表示遞迴查詢,使用的模式較為簡單,僅作參考)
由於現在的很多專案都使用subversion作為版本管理工具,因此每個原始碼目錄下都會有乙個.svn目錄,其中包含了很多原始碼資訊。不出意外,你很快會得到滿螢幕的列印資訊,但是其中大部分的資訊都來自於 .svn 目錄下的檔案。
有如下兩種選擇可以去除來自 .svn 目錄的結果資訊:
1.使用管道進行雙層「過濾」,其中第二次grep使用了-v選項,即逆向匹配,列印出不匹配的行
grep -r 'function_name' * | grep -v '.svn'
2.或者更簡單一些,直接使用--exclude-dir選項,即指定排除目錄,注意svn前的\.
grep -r --exclude-dir=\.svn 'function_name' *
的確,通過簡單的選項設定,我們達到了過濾.svn目錄的功能,但是每次都要輸入 --exclude-dir=\.svn 的選項,似乎太麻煩了一點,幸運的是linux下靈活的配置檔案可以解決這一切:
開啟~/.bashrc(這是bash的當前使用者配置檔案),在檔案的最上方新增這樣一條:
export grep_options="--exclude-dir=\.svn"
(注意 = 的前後不能有空格,不然在載入該配置檔案時會提示錯誤)
export grep_options="--exclude-dir=\.svn --exclude-dir=\.git --exclude=tags --exclude=cscope\.out"
儲存並關閉,同時在命令列鍵入如下命令:
source ~/.bashrc(讓bash重新讀取指令碼)
當然,你也可以簡單地關閉shell並重新開啟乙個shell視窗
參考:--exclude=file_pattern skip files and directories matching file_pattern
--exclude-from=file skip files matching any file pattern from file
--exclude-dir=pattern directories that match pattern will be skipped.
刪除檔案排除指定檔案或者目錄方法 linux
有時候更新 的時候需要保留一些配置檔案,或者某些特殊目錄就需要這樣的操作。刪除資料夾內所有檔案保留部分檔案 只能是當前目錄下的檔案或資料夾能保留 以當前目錄為基準 保留一檔案 一資料夾 rm rf ls egrep v config.js dist 以當前目錄為基準 刪除某一類 rm rf ls p...
如何cp目錄時忽略指定的目錄和檔案
在備份ltedecoder程式時,需要把此目錄拷由到bak目錄下,但decoder目錄下有個大檔案,不需要備份,還有日誌問題,也不需要備份,如何實現呢?方法 cd source dir find name snapshot prune o print0 cpio pmd0 dest dir 此段的意...
tar打包時排除一些檔案或者目錄
用tar打包時排除檔案 可以使用 exclude引數 如 tar cvfz backup 1.tar.gz opt data exclude resource 在打包 opt data時就排除了resource命名的目錄和檔案。如果想不包含部分的特定檔案列表,可以把不包含的檔案放到乙個檔案ext.t...