在使用Linux的過程中l(wèi)inux命令大全,最常做的操作就是對文件/文本進行一些處理。本文簡單介紹下Linux中常用的文本處理命令,主要包括以下命令: find / grep / sort / cut / awk / sed / uniq / tee / tr / diff / cmp / split / xargs,下面依次介紹。
find
命令說明: 查找符合條件的文件,并執(zhí)行指定的操作
命令格式: find [指定目錄] [查找規(guī)則] [指定操作]
1.1 指定目錄
[dir1 dir2] # 可以指定多個目錄
1.2 查找規(guī)則
[-name] # 根據(jù)文件名查找 (區(qū)分大小寫|支持通配符)
[-iname] # 根據(jù)文件名查找 (不區(qū)分大小寫|支持通配符)
[-user] # 根據(jù)所屬用戶查找
[-group] # 根據(jù)所屬用戶組查找
[-nouser] # 查找無所屬用戶的文件
[-nogroup] # 查找無所屬用戶組的文件
[-uid] # 根據(jù)用戶ID查找
[-gid] # 根據(jù)組ID查找
[-a] # AND 連接兩個條件
[-o] # OR 連接兩個條件
[-not] # NOT 對條件取反
[-atime -n/+n] # 按文件訪問時間 (n天以內(nèi) / n天以前)
[-ctime -n/+n] # 按文件創(chuàng)建時間 (n天以內(nèi) / n天以前)
[-mtime -n/+n] # 按文件修改時間 (n天以內(nèi) / n天以前)
-type b/d/c/p/l/f #查是塊設(shè)備、目錄、字符設(shè)備、管道、符號鏈接、普通文件。f#查是塊設(shè)備、目錄、字符設(shè)備、管道、符號鏈接、普通文件。答: 其實管道的使用方法與文件類似,都能使用read,write,open等普通io函數(shù). 管道描述符來類似于文件描述符. 事實上, 管道使用的描述符,文件指針和文件描述符最終都會轉(zhuǎn)化成系統(tǒng)中socket描述符. 都受到系統(tǒng)內(nèi)核中socket描述符的限制. 本質(zhì)上linux內(nèi)核源碼中管道是通過空文件來實現(xiàn).faq2: 管道的使用方法。
[-size 2M/+2M/-2M] # 按文件大小 (等于2M / 大于2M / 小于2M)
[-perm 755] # 按文件權(quán)限 (755權(quán)限)
1.3 指定操作
{} # 代表找到的文件
[-print] # 查找后打印結(jié)果 (默認操作)
[-ls] # 查找后把結(jié)果列表顯示
[-ok] # 查找后詢問用戶是否執(zhí)行命令
[-exec] # 查找后不詢問直接執(zhí)行命令
1.4 舉例說明
要求:查找 (/data/ 和 /www/) 目錄下的后綴名為 (.php 或 .sh) 且創(chuàng)建時間在 5天之內(nèi) 的 普通文件 并 重命名。
[命令1]
find /data/ /www/ -name ".php" -o -name ".sh" -ctime -5 -type f -exec mv {} {}.bak ;
說明:以上命令 [-exec] ,只會對滿足 .sh 規(guī)則的文件進行重命名操作linux命令大全,而忽略了 -o 條件查找出來的 .php 文件,因此并不能滿足要求,另外一定要注意命令結(jié)尾的空格和 ; 。
[命令2]
find /var/www/ -type f -name "*.php" | xargs grep "eval(" |more。find . -type f -name '*.jsp' | xargs grep -i 'gethostaddress'。find ${findpath} -name "*.php" -ctime -3 -type f -exec ls -l {} \。