文件 查看命令:cat, tac,rev
cat [OPTION]… [FILE]…
-E: 顯示行結束符$
-n: 對顯示出的每一行進行 編號
-A :顯示所有控制符
-b: : 非空行編號
-s :壓縮連續的空行成一行
分頁查看文件內容
more: 分頁查看文件
more [OPTIONS…] FILE…
-d: 顯示翻頁及退出提示
less :一頁一頁地查看文件或STDIN 輸出
查看時有用的命令包括:
n/N 跳到下一個 個 或 或 上 一個匹配
less 命令是man
顯示文本前或后行內容
head [OPTION]… [FILE]…
-c #: 指定獲取前# 字節
-n #: 指定獲取前#行 行
-#: : 指定行數
tail
tail [OPTION]… [FILE]…
-c #: 指定獲取后# 字節
-n #: 指定獲取后#行 行
-#: :
-f: 跟蹤顯示文件新追加的內容
按列抽取文本cut 和合并文件paste
cut [OPTION]… [FILE]…
-d DELIMITER: 指明分隔符,默認tab
-f FILEDS:
: 第# 個字段
,#[,#] :離散的多個字段,例如1,3,6
-# :連續的多個字段, 例如1-6
混合使用:1-3,7
-c 按字符切割
–output-delimiter=STRING 指定輸出分隔符
cut 和paste
顯示文件或STDIN 數據的指定列
cut -d: -f1 /etc/passwd
cat /etc/passwd | cut -d: -f7
cut -c2-5 /usr/share/dict/words
paste 合并兩個文件同行號的列到一行
paste [OPTION]… [FILE]…
-d 分隔符: 指定分隔符,默認用TAB
-s : 所有行合成一行顯示
paste f1 f2
paste -s f1 f2
分析文本的工具
文本數據統計:wc
整理文本:sort
比較文件:diff 和patch
收集文本統計數據wc
計數單詞總數、行總數、字節總數和字符總數
可以對文件或STDIN 中的數據運行
$ wc story.txt
39 237 1901 story.txt
行數 字數 字符數
使用 -l 來只計數行數
使用 -w 來只計數單詞總數
使用 -c 來只計數字節總數
使用 -m 來只計數字符總數
文本排序sort
把整理過的文本顯示在STDOUT ,不改變原始文件
sort [options] file(s)
常用選項
-n 執行按數字大小整理
-f 選項忽略(fold )字符串中的字符大小寫
-u 選項(獨特,unique )刪除輸出中的重復行
-t c 選項使用c 做為字段界定符
-k X 選項按照使用c 字符分隔的X
uniq
uniq 命令:從輸入 中刪除前后相接的 重復的 行
uniq [OPTION]… [FILE]…
-c: 顯示每行重復出現 的次數
-d: 僅顯示重復過 的行
-u: 僅顯示不曾重復 的行
連續且完全相同方為重復
常和sort 命令一起配合使用:
sort userlist.txt | uniq -c
比較文件
比較兩個文件之間的區別
$ diff foo.conf-broken foo.conf-works
5c5
< use_widgets = no
—
> use_widgets = yes
? 注明第5 行有區別(改變)
復制對文件改變patch
diff 命令的輸出被保存在一種叫做“補丁”的文件中
使用 -u 選項來輸出“統一的(unified )”diff 格式文件,最適用于補丁文件。
patch 復制在其它文件中進行的改變(要謹慎使用)
適用 -b 選項來自動備份改變了的文件
$ diff -u foo.conf-broken foo.conf-works > foo.patch
$ patch -b foo.conf-broken foo.patch
文件查找
在文件系統上查找符合條件 的文件
文件查找:locate, find
非實時查找( 數據庫查找) :locate
實時查找:find
locate
查詢系統上預建的文件索引數據庫
/var/lib/mlocate/mlocate.db
依賴于事先構建 的索引
索引的構建是在系統較為空閑時自動進行( 周期性 任務),管理員 手動更新數據庫(updatedb)
索引構建過程需要遍歷整個根文件系統,極 消耗資源
工作特點:
? 查找 速度 快
? 模糊 查找
? 非實時查找
? 搜索的是文件的全路徑,不僅僅是文件名
? 可能只搜索用戶具備讀取和執行權限的目錄
locate 命令
locate KEYWORD
有用的選項
-i 不區分大小寫的搜索
-n N 只列舉前N 個匹配項目
locate conf
搜索名稱或路徑中帶有“conf ”的文件
locate -r ‘.conf$’
使用Regex 來搜索以“.conf ”結尾的文件
find
實時查找工具,通過遍歷指定路徑完成文件查找
工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄
find
語法:
find [OPTION]… [ 查找路徑] [ 查找條件] [ 處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、
權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
查找條件
指搜索層級
-maxdepth level 最大搜索目錄深度, 指定 目錄為第1級 級
-mindepth level 最大 搜索目錄深度
根據文件名和inode 查找:
-name ” 文件名稱” :支持使用glob
*, ?, [], [^]
-iname ” 文件名稱” :不區分字母大小寫
-inum n 按inode 號查找
-samefile name 相同inode 號的文件
-links n 鏈接數為n 的文件
-regex “PATTERN” :以PATTERN 匹配整個文件路徑字符串,而不僅僅是文件名稱
根據屬主、屬組查找:
-user USERNAME :查找屬主為指定用戶(UID) 的文件
-group GRPNAME: 查找屬組為指定組(GID) 的文件
-uid UserID :查找屬主為指定的UID 號的文件
-gid GroupID :查找屬組為指定的GID 號的文件
-nouser :查找沒有屬主的文件
-nogroup
根據文件類型查找:
-type TYPE:
? f: 普通文件
? d: 目錄文件
? l: 符號鏈接文件
? s :套接字文件
? b: 塊設備文件
? c: 字符設備文件
? p: 管道文件
組合條件:
與:-a
或:-o
非:-not, !
德 德· 摩根 定律:
(非 非 P) 或 或 (非 非 Q) = 非(P 且 且 Q)
(非 非 P) 且 且 (非 非 Q) = 非(P 或 或 Q)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
find 示例
find -name snow.png
? 搜索名為snow.png 的文件
find -iname snow.png
? 不分大小寫地搜索名為snow.png 、Snow.png、 、
SNOW.PNG 等等的文件
find / -name “.txt”
find /var –name “log”
find -user joe -group joe
搜索被用戶joe 以及組群joe
? find -user joe -not -group joe
? find -user joe -o -user jane
? find -not ( -user joe -o -user jane )
? find / -user joe -o -uid 500
找出/tmp 目錄下,屬主不是root ,且 文件名 不以f 開頭的 文件
find /tmp ( -not -user root -a -not -name ‘f‘ ) -ls
find /tmp -not ( -user root -o -name ‘f‘ ) –ls
排除 目錄
? 示例:查找/etc/ 下,除/etc/sane.d 目錄的其它所有.conf 后綴的文件
find /etc -path ‘/etc/sane.d’ -a -prune -o -name “.conf” -print
根據文件大小來查找:
-size [+|-]#UNIT
常用單位:k, M, G
UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT :[0,#-1]
如: :-6k 表示[0,5k]
+#UNIT :(#, ∞ )
如: :+6k 表示(6k ,∞ )
根據時間戳:
以“天”為單位;
-atime [+|-]#,
: [#,#+1)
+#: [#+1, ∞ ]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE :任何一類(u,g,o) 對象的權限中只要能一位匹配即可,或關系,+ 從centos7 開始淘汰
-MODE :每一類對象都必須同時擁有指定權限,與關系0 表示不關注
? find -perm 755 會匹配權限模式恰好是755 的文件
? 只要當任意人有寫權限時,find -perm +222 就會匹配
? 只有當每個人都有寫權限時,find -perm -222 才會匹配
? 只有當其它人(other )有寫權限時,find -perm -002才會匹配
處理動作
-print :默認的處理動作,顯示至屏幕
-ls :類似于對查找到的文件執行“ls -l” 命令
-delete :刪除查找到的文件
-fls file :查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由 COMMAND指定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND 指定的命令
{}: 用于引用查找到的文件名稱自身
find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
參數 替換 換xargs
用于 產生 某個命令的 參數, ,xargs 入 可以讀入 stdin 的數據,并且以空格符 或 回車符將 將 stdin 的數據分隔 成為arguments
注意:文件 名 或者是其他意義的名詞內含有 空格符 的情況
有些命令不能接受過多參數 ,命令執行 可能會 失敗,xargs可以解決
示例:
find | xargs COMMAND
find /sbin -perm +7000 | xargs ls -l
find 示例
find -name “.conf” -exec cp {} {}.orig \;
? 備份配置文件,添加.orig 這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;
? 提示刪除存在時間超過3天以上的joe 的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;
? 在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name “.sh” –exec
chmod 755 {} \;
find /home –type d -ls
原創文章,作者:SDS,如若轉載,請注明出處:http://www.www58058.com/71274