Linux shell指令碼學習攻略筆記3__Linux

來源:互聯網
上載者:User

   今天繼續上一次find命令的內容,主要是find和 -exec 和xargs的結合和使用。

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

比如我們要將某位使用者全部檔案的所有權更換為另一個使用者(比如root),那麼就可以用 -user找出root擁有的所有檔案,然後用-exec更改所有權。(注意你必須以root使用者的身份執行find命令才能進行所有權的更改)

      例1:

# find . -type f -user root -exec chown slynux {} \;
 在這個命令中,{ }是一個與-exec選項搭配使用的特殊字元串。對於每一個匹配的檔案,{ }會被替換成相應的檔案名稱。例如,find命令找到兩個檔案test1.txt和text.txt,其所有者均為slynux,那麼find就會執行:

 chown slynux {}  它會被解析為 chown slynux test1.txt 和 chown slynux test2.txt。

     例2:

         將給定目錄中的所有C程式檔案拼接起來寫入單個檔案all_c_files.txt。我們可以用find找到所有C檔案,然後結合-exec 使用cat命令:

$ find . -type f -name "*.c" -exec cat {} \    > all_c_file.txt
 -exec 之後可以接任何命令。 { }表示一個匹配。對於任何匹配的檔案名稱, { } 均會被改檔案名稱所替換。

      例3:

     用下列命令將10天前的.txt檔案複製到OLD目錄中:

$ find  -type f - name "*.txt" -mtime -10 -exec cp {}  OLD \;
 -exec 能夠同printf結合來產生有用的輸出資訊。例如

$ find . -type f -name "*.txt" -exec  printf  "Text file: %s\n" {} \;

        (10): 讓find跳過特定的目錄

        在搜尋目錄並執行某些操作時,有時為了提高效能,需要跳出一些子目錄。將某些檔案或目錄從搜尋過程中排除在外的技巧被稱之為修建。其操作方法如下:

$ find . \( -name "*.git" prune\) -o \(-type f -print\)# 代替直接使用 \( -type f -print\), 而是選擇需要的過濾器
以上命令列印出不包括在.git目錄中的所有檔案的名稱(路徑)。

 

   


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.