tft每日頭條

 > 科技

 > linux查看文件具體内容命令

linux查看文件具體内容命令

科技 更新时间:2024-12-02 14:41:37

linux查看文件具體内容命令?# 在目錄下查找文件并打印路徑,子目錄也會查找 find /home/test -name test.sh -print 12,現在小編就來說說關于linux查看文件具體内容命令?下面内容希望能幫助到你,我們來一起看看吧!

linux查看文件具體内容命令(文件查找與編輯命令集合)1

linux查看文件具體内容命令

一、find 查找命令

# 在目錄下查找文件并打印路徑,子目錄也會查找 find /home/test -name test.sh -print 12

命令選項:

  • -name 按照文件名查找
  • -perm 按照文件權限來查找文件
  • -prune 不在當前指定的目錄查找。如果同時使用了-depth,那-prune會被忽略
  • -user 按文件屬主來查找文件
  • -group 按所屬組來查找文件
  • -mtime -n n 按照文件更改時間來查找文件
  • -nogroup 查找無有效所屬組的文件,即在該所屬組在/etc/groups中不存在
  • -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在
  • -newer file1 !file2 查找更改時間比file1新但比file2老的文件
  • -type 查找某一類型的文件
  • -size n[c]查找文件工度為n塊的文件,帶有c時表示文件長度以字節計算
  • -depth 在查找文件地,首先查找當前目錄中的文件,然後在其子目錄中查找。
  • -fstype 查找位于某一類型雇傭系統中的文件
  • -mount 在查找文件地不跨越文件系統mount點
  • -cpio 對匹配的文件使用cpio命令,将這些文件備份到磁帶設備中

# 模糊搜索,在$HOME目錄下查找後綴txt的文件 find ~ -name "*.txt" -print # 使用正則表達式,查找當前目錄及子目錄裡大寫開頭的文件 find . -name "[A-Z]*" -print # 在/etc裡找host開頭的文件 find /etc -name "host*" -print # 查找兩個小寫字母開頭,後跟兩個數字的文件 find . -name "[a-z][a-z][0-9][0-9].txt" -print # 當前目錄下找權限為755的文件 find . -perm 755 -print # 忽略/apps/bin目錄進行查找 find /apps -name "/apps/bin" -prune -o -print # 用ls -l 列出所找到的文件 find . -type f -exec ls -l {} \; # 删除5天前的日志 find . -name "*.LOG" -mtime 5 -ok rm {} \; find /home/hap/src/* -name "*.o" -exec rm {} \; # 使用xargs # 用grep命令在所有的普通文件中搜索device單詞 find / -type f -print | xargs grep "device" 123456789101112131415161718192021

# 查找大文件 find . -type -size 200M # 查找大于400M的文件 find . -type f -size 400M -print0 | xargs -0 du -h 1234

二、文本搜索工具 grep

全稱是 Global Regular Expression Print,使用正則表達式搜索文本。命令格式: grep [options]主要參數:

  • -a或--text 不要忽略二進制的數據。
  • -A<顯示列數>或--after-context=<顯示列數> 顯示搜索到的那列和該列之後的内容。
  • -b或--byte-offset 在顯示符合範本樣式的那一列之前,标示出該列第一個字符的位編号。
  • -B<顯示列數>或--before-context=<顯示列數> 顯示搜索到的列和該列之前的内容。
  • -c或--count 計算符合範本樣式的列數。
  • -C<顯示列數>或--context=<顯示列數>或-<顯示列數> 除了顯示符合範本樣式的那一列之外,并顯示該列之前後的内容。
  • -d<進行動作>或--directories=<進行動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep指令将回報信息并停止動作。
  • -e<範本樣式>或--regexp=<範本樣式> 指定字符串做為查找文件内容的範本樣式。
  • -E或--extended-regexp 将範本樣式為延伸的普通表示法來使用。
  • -f<範本文件>或--file=<範本文件> 指定範本文件,其内容含有一個或多個範本樣式,讓grep查找符合範本條件的文件内容,格式為每列一個範本樣式。
  • -F或--fixed-regexp 将範本樣式視為固定字符串的列表。
  • -G或--basic-regexp 将範本樣式視為普通的表示法來使用。
  • -h或--no-filename 在顯示符合範本樣式的那一列之前,不标示該列所屬的文件名稱。
  • -H或--with-filename 在顯示符合範本樣式的那一列之前,表示該列所屬的文件名稱。
  • -i或--ignore-case 忽略字符大小寫的差别。
  • -l或--file-with-matches 列出文件内容符合指定的範本樣式的文件名稱。
  • -L或--files-without-match 列出文件内容不符合指定的範本樣式的文件名稱。
  • -n或--line-number 在顯示符合範本樣式的那一列之前,标示出該列的列數編号。
  • -q或--quiet或--silent 不顯示任何信息。
  • -r或--recursive 此參數的效果和指定“-d recurse”參數相同。
  • -s或--no-messages 不顯示錯誤信息。
  • -v或--revert-match 反轉查找。
  • -V或--version 顯示版本信息。
  • -w或--word-regexp 隻顯示全字符合的列。
  • -x或--line-regexp 隻顯示全列符合的列。
  • -y 此參數的效果和指定“-i”參數相同。
  • --help 在線幫助。
  • --color=auto 将搜索到的内容标上顔色。

pattern 正則表達式主要參數:

  • \ :忽略正則表達式中特殊字符的原有含義。
  • ^:匹配正則表達式的開始行。
  • $ :匹配正則表達式的結束行。
  • \<:從匹配正則表達 式的行開始。
  • \>:到匹配正則表達式的行結束。
  • [ ]:單個字符,如[A]即A符合要求 。
  • [ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。
  • .:所有的單個字符。
  • * :有字符,長度可以為0。

示例

# 從.txt文件中查找包含'a'字符串的文本文件 grep 'a' *.txt --color=auto # 搜索包含連續4個字符的文件 grep '[a-z]\{4\}' *.txt 1234

三 、 sed 從文件中查找

sed 是利用腳本來處理文本文件,可以自動編輯一個或多個文件,簡化重複操作。

命令格式sed [-nefr] [操作]

參數說明

  • -e<script>或--expression=<script> 以選項中指定的script來處理輸入的文本文件。
  • -f<script文件>或--file=<script文件> 以選項中指定的script文件來處理輸入的文本文件。
  • -h或--help 顯示幫助。
  • -n或--quiet或--silent 僅顯示script處理後的結果。
  • -V或--version 顯示版本信息。

動作說明

  • a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
  • c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
  • d :删除,因為是删除啊,所以 d 後面通常不接任何咚咚;
  • i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
  • p :打印,亦即将某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行~
  • s:取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!

sed -n '2p' sed.txt 打印第2行 sed -n '1,3p' sed.txt 打印1~3行 sed -n '1,3p' sed.txt >sed.tmp 1~3行輸出到sed.tmp文件裡 sed -n '1,$p' sed.txt 顯示全文 sed -n '1p' sed.txt 打印首行 sed -n '$p' sed.txt 打印最後一行 sed '2p' sed.txt 輸出全部文本,然後輸出第2行 sed -n '/should/'p sed.txt 查找should的行 sed -n '/should/=' sed.txt 輸出匹配的行号 sed -n '/\./'p sed.txt 特殊字符查詢,需要\進行轉義 sed '1,3d' sed.txt 删除1~3行 sed '/should/d' sed.txt 删除包含should的行 sed 's/PS/ps/' sed.txt 替換每行第一個單詞 sed 's/PS/ps/g' sed.txt 全文替換 sed '1,3 s/should/SHOULD/g' sed.txt 指定行替換 sed '1 s/should/SHOULD/g' sed.txt 指定行範圍替換 控制字符輸入方式: ^M 1.Ctrl v 2.M 3.釋放Ctrl 123456789101112131415161718192021

四、awk

與sed 相比, awk 傾向于一行中分成數個字段來處理,适合處理小型的文本數據。

awk處理過程: 依次對每一行進行處理,然後輸出

awk命令樣式

  • awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
  • [-F|-f|-v] 大參數,-F指定分隔符,-f調用腳本,-v定義變量 var=value
  • ' ' 引用代碼塊
  • BEGIN 初始化代碼塊,在對每一行進行處理之前,初始化代碼,主要是引用全局變量,設置FS分隔符
  • // 匹配代碼塊,可以是字符串或正則表達式
  • {} 命令代碼塊,包含一條或多條命令
  • ; 多條命令使用分号分隔
  • END 結尾代碼塊,在對每一行進行處理之後再執行的代碼塊,主要是進行最終計算或輸出結尾摘要信息。

特殊要點:

  • $0 表示整個當前行
  • $1 每行第一個字段
  • NF 字段數量變量
  • NR 每行的記錄号,多文件記錄遞增
  • FNR 與NR類似,不過多文件記錄不遞增,每個文件都從1開始
  • \t 制表符
  • \n 換行符
  • FS BEGIN時定義分隔符
  • RS 輸入的記錄分隔符, 默認為換行符(即文本是按一行一行輸入)
  • ~ 匹配,與==相比不是精确比較
  • !~ 不匹配,不精确比較
  • == 等于,必須全部相等,精确比較
  • != 不等于,精确比較
  • &&  邏輯與
  • || 邏輯或
  • 匹配時表示1個或1個以上
  • /[0-9][0-9] / 兩個或兩個以上數字
  • /[0-9][0-9]*/ 一個或一個以上數字
  • FILENAME 文件名
  • OFS 輸出字段分隔符, 默認也是空格,可以改為制表符等
  • ORS 輸出的記錄分隔符,默認為換行符,即處理結果也是一行一行輸出到屏幕
  • -F'[:#/]' 定義三個分隔符
五、文件比較diff

diff [選項] <參數>常用命令選項:

  • -<行數>:指定要顯示多少行的文本。此參數必須與-c或-u參數一并使用;
  • -a或--text:diff預設隻會逐行比較文本文件;
  • -b或--ignore-space-change:不檢查空格字符的不同;
  • -B或--ignore-blank-lines:不檢查空白行;
  • -c:顯示全部内容,并标出不同之處;
  • -C<行數>或--context<行數>:與執行“-c-<行數>”指令相同;
  • -d或--minimal:使用不同的演算法,以小的單位來做比較;
  • -D<巨集名稱>或ifdef<巨集名稱>:此參數的輸出格式可用于前置處理器巨集;
  • -e或--ed:此參數的輸出格式可用于ed的script文件;
  • -f或-forward-ed:輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處;
  • -H或--speed-large-files:比較大文件時,可加快速度;
  • -l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若兩個文件在某幾行有所不同,而之際航同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異;
  • -i或--ignore-case:不檢查大小寫的不同;
  • -l或--paginate:将結果交由pr程序來分頁;
  • -n或--rcs:将比較結果以RCS的格式來顯示;
  • -N或--new-file:在比較目錄時,若文件A僅出現在某個目錄中,預設會顯示:Only in目錄,文件A 若使用-N參數,則diff會将文件A 與一個空白的文件比較;
  • -p:若比較的文件為C語言的程序碼文件時,顯示差異所在的函數名稱;
  • -P或--unidirectional-new-file:與-N類似,但隻有當第二個目錄包含了第一個目錄所沒有的文件時,才會将這個文件與空白的文件做比較;
  • -q或--brief:僅顯示有無差異,不顯示詳細的信息;
  • -r或——recursive:比較子目錄中的文件;
  • -s或--report-identical-files:若沒有發現任何差異,仍然顯示信息;
  • -S<文件>或--starting-file<文件>:在比較目錄時,從指定的文件開始比較;
  • -t或--expand-tabs:在輸出時,将tab字符展開;
  • -T或--initial-tab:在每行前面加上tab字符以便對齊;
  • -u,-U<列數>或--unified=<列數>:以合并的方式來顯示文件内容的不同;
  • -v或--version:顯示版本信息;
  • -w或--ignore-all-space:忽略全部的空格字符;
  • -W<寬度>或--width<寬度>:在使用-y參數時,指定欄寬;
  • -x<文件名或目錄>或--exclude<文件名或目錄>:不比較選項中所指定的文件或目錄;
  • -X<文件>或--exclude-from<文件>;您可以将文件或目錄類型存成文本文件,然後在=<文件>中指定此文本文件;
  • -y或--side-by-side:以并列的方式顯示文件的異同之處;
  • --help:顯示幫助;
  • --left-column:在使用-y參數時,若兩個文件某一行内容相同,則僅在左側的欄位顯示該行内容;
  • --suppress-common-lines:在使用-y參數時,僅顯示不同之處。

# 最簡單的用法 diff file1 file2 # 并排格式輸出 diff file1 file2 -y -W 50 1234

另外 cmp命令也可以進行文件比較。由于現在可視化工具很多,這些命令很多人日常工作中其實很少會用到;在文件處理方面現在腳本語言Python等用來作文件處理也更方便。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved