- 概述
- find 檔案查找
- grep 文本搜索
- 參考資料
概述
Linux 下使用 Shell 處理文本時最常用的工具有: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk,
find 檔案查找
man 檔案給出的 find 命令的一般形式為:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
這對于大部分人來說都太復雜了,[-H] [-L] [-P] [-D debugopts] [-Olevel] 這幾個選項并不常用,find 命令的常用形式可以簡化為:
$ find [PATH] [option] [action]
1,根據檔案或者正則運算式進行匹配
$ find . # 查找當前目錄及子目錄下所有檔案及檔案夾
$ find /data -name "*.txt" # 在 /data 目錄及子目錄下查找以 .txt 結尾的檔案名
$ find . \( -name "*.txt" -o -name "*.pdf" \) # 當前目錄及子目錄下查找所有以 .txt 和 .pdf 結尾的檔案
$ find . -maxdepth 1 -type d # 查找當前目錄下所有的子目錄
$ find . -maxdepth 1 -regex ".*\.txt$" # 基于正則運算式匹配當前目錄下的所有以 .txt 結尾的檔案
./multi_classifynet_infer_ret.txt
./cali_left_img.txt
... 省略
2,根據檔案型別進行搜索
find . -type 型別引數,f 普通檔案,l 符號連接,d 目錄,c 字符設備,b 塊設備,s 套接字,p Fifo
$ find . -maxdepth 1 -type d # 查找當前目錄下的所有子目錄
3,基于目錄深度搜索
$ find . maxdepth 3 -type f # 目錄向下最大深度限制 3
4,根據檔案時間戳進行搜索
find . -type -f 時間戳引數,與時間有關的選項:共有 -atime, -ctime 與 -mtime,以 -mtime 說明
- -mtime n : n 為數字,意義為在 n 天之前的『一天之內』被更改過內容的檔案;
- -mtime +n :列出在 n 天之前(不含 n 天本身)被更改過內容的檔案名;
- -mtime -n :列出在 n 天之內(含 n 天本身)被更改過內容的檔案名,
- -newer file : file 為一個存在的檔案,列出比 file 還要新的檔案名
$ find /etc -newer /etc/passwd # 尋找 /etc 底下的檔案,如果檔案日期比 /etc/passwd 新就列出
5,與檔案權限及名稱有關的引數:
-name filename:搜尋檔案名為filename的檔案,-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案, 這個 SIZE 的規格有:c: 代表 byte,k: 代表 1024 bytes,所以,要找比 50KB還要大的檔案,就是-size +50k,-type TYPE:搜尋檔案的型別為 TYPE 的, 型別主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性,-perm mode:搜尋檔案權限『剛好等于』mode的檔案, 這個 mode 為類似 chmod 的屬性值, 舉例來說,-rwxr-xr-x的屬性為755,-perm -mode:搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案, 舉例來說,我們要搜尋-rwxr--r--,亦即744的檔案,使用-perm -744,但是當一個檔案的權限為-rwxr-xr-x,亦即755時,也會被列出來,因為-rwxr-xr-x的屬性已經包括了-rwxr--r--的屬性了,-perm /mode:搜尋檔案權限『包含任一mode的權限』的檔案, 舉例來說,我們搜尋 -rwxr-xr-x ,亦即 -perm /755 時,但一個檔案屬性為 -rw-------也會被列出來,因為他有-rw....的屬性存在,
范例:
```shell
root@17c30d837aba:/data# find . -maxdepth 1 -perm 777 # 查找當前目錄下檔案權限剛好等于777 的檔案
.
./honggaozhang
./demo.sh
grep 文本搜索
grep 支持使用正則運算式搜索文本,并把匹配的行列印出來,grep 命令常見用法,在檔案中搜索一個單詞,命令會回傳一個包含 “match_pattern” 的文本行:
grep match_pattern file_name
grep "match_pattern" file_name
常用引數
-o:只輸出匹配的文本行,-v只輸出沒有匹配的文本行-c:統計檔案中包含文本的次數: `grep -c “text” filename-n:列印匹配的行號-i:搜索時忽略大小寫-l:只列印檔案名
$ grep "class" . -R -n # 在多級目錄中對文本遞回搜索(程式員搜代碼的最愛)
$ grep -e "class" -e "vitural" file # 匹配多個模式
參考資料
- 【日常小記】linux中強大且常用命令:find、grep
- 鳥哥的Linux私房菜 基礎篇 第四版
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/538889.html
標籤:其他
上一篇:升級到win11 22h2的體驗
下一篇:升級到win11 22h2的體驗
