(linux shell)第二章--命令之樂(一)

來源:互聯網
上載者:User

標籤:linux shell 基礎   shell find   

文章來自於我的個人部落格:(linux shell)第二章--命令之樂(一)   

上一章我們描述了一些linux shell中需要注意的一些文法,接下來我們開始瞭解linux shell的常用命令。let‘s go...

  1. cat 命令:

    cat本身表示拼接(concatenate)。cat命令有一些常用參數,像-n,-s等,我們下面逐一介紹:

    如果你想快速查看一個文字檔內容,就可以使用cat命令:

    cat file

    如果你想一次查看多個檔案內容,也是在後面加上檔案路徑即可

    cat file1 file2 file3

    如果想顯示文字檔的行號,則使用參數-n:

    cat -n file 或者 cat -n file1 file2 file3

    如果想去掉文本中的空行,則使用參數 -s:

    cat -s file 或者 cat -s file1 file2 file3 當然這裡也可以使用tr命令來益處空白行:cat file | tr -s ‘‘;  這個tr命令的意思是說將多個分行符號當作一個分行符號來看待。

  2. find 命令:

    find命令是沿著檔案階層向下遍曆,匹配合格檔案,並執行相應的操作。

    基本文法:

    find . -print   #列印出帶有路徑的目前的目錄下的所有檔案路徑

      find命令也有很多參數,我們下面來看一些常用參數的用法:

          1).根據檔案名稱或者Regex匹配搜尋

                find . -name "*.sh" -print   #從目前的目錄尋找所有符合以sh結尾的檔案,並列印到終端

                

                 -name還有一個對應的-iname來忽略關鍵字的大小寫

                find . -iname "*.sh" -print

        2).根據路徑匹配

                find . -path "*test*" -print  #從目前的目錄開始,尋找路徑首碼是test的所有路徑以及列印出這些目錄下的檔案

                

        3).基於Regex的匹配 -regex

                find . -regex ".*\.py$" -print

                

         4).否定參數 !

                如果想要尋找不包含條件的檔案,則在類型前面加上!即可:

                find . ! -name "*.sh" -print

                

        5).給予目錄深度的搜尋 -maxdepth 和-mindepth

                我們可以通過這個命令來限制find向下尋找的深度

                find . -maxdepth 1 -type f -print   #在目前的目錄的目前的目錄尋找是檔案類型的檔案,也就是尋找時它不會向下遍曆

                

                -maxdepth和-mindepth應該作為find的第三個參數出現,如果作為第四個或者之後的參數出現,就可能會影響到find的效率,因為  它不得不進行一些不必要的檢查。

    ?    ?6).根據檔案類型搜尋 -type

    ?    ?    ?find . -type d -print   #只列出所有的目錄

    ?    ?    ?

    ?    ?    ?find . -type f -print   #只列出所有的檔案

    ?    ?    ?find . -type l -print    #只列出所有的連結

    ?    ?7).根據檔案的時間搜尋  -mtime(修改時間) -atime(訪問時間) -ctime(變化時間),時間用+,-來表示時間的前後

    ?    ?    ?find . -type f -atime -7 -print   #列印出在最近7天內被訪問的所有檔案

    ?    ?    ?

    ?    ?    -amin(訪問時間),-mmin(修改時間),-cmin(變化時間)

    ?    ?    ?find . -type f -amin +7 -print    #列印出訪問時間超過7分鐘的所有檔案

    ?    ?    ?find . -type f -newer file.sh -print   #找出比file.sh修改時間更長的所有檔案

    ?    ?8),基於檔案大小的搜尋  -size

    ?    ?    ?find . -type f -size +2k    #尋找大於2KB的所有檔案,除了k之外,還可以使用b--塊,c--位元組,w--字,M--MB,G--吉位元組

    ?    ?    ?

    ?    ?    ?find . -type f -size 2k   #大於等於2KB的檔案

    ?    ?    ?find . -type f -size -2k  #小於2KB的檔案

    ?    ?9).匹配操作

    ?    ?    ?find . -name "*.sh" -delete   #刪除匹配的所有檔案(甚用)

    ?   10).基於檔案許可權和所有權的匹配  --perm

    ?    ?    ?find . -type f -perm 644 -print   #列印出許可權為644的檔案

    ?   11).結合find執行命令或動作

    ?    ?    ?find命令可以藉助選項-exec與其他命令進行結合,-exec算得上是find最強大的特性之一。

    ?    ?    ?find . -type f -user root -exec chown test {} \; 這個命令中,{}是一個特殊字元串,與-exec選項結合使用。對於每個匹配的檔案,{}會被替換成相應的檔案名稱。在上面的命令中,先尋找檔案所屬是root使用者的所有檔案,然後給test使用者添加許可權。

    ?    ?    ?find . -type f -name "*.sh" -exec cat {} \; > all_sh_files.txt  這個命令是先查出所有的sh檔案,然後將檔案的內容都加到文字檔中。?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.