find 命令(三)
下面將介紹如何使用 find 命令的-exec 選項來實現對查找到的文件執行指定的動作命令。
(1)常用範例
例一:找到當前目錄下所有 php 文件,並顯示其詳細信息,可以使用如下命令:
find . -name "*.php" -exec ls -l {} \;
-exec 是 find 命令對找到的文件執行的動作,這個動作就是對找到的文件執行命令,上面的命令就是 ls -l {}。在這裏說明一下{}和;,{}其實它就是一個佔位符,在 find 命令的執行過程中會不斷地替換成當前找到的文件,相當於”ls -l 找到的文件”。而;是-exec 的命令結束標記,因爲規定-exec 後面的命令必須以;結束,但;在 shell 中有特殊含義,必須要轉義,所以寫成;。
例二:在環境中有很多自己編寫的 c 語言代碼文件,現在想要把所有 c 語言代碼文件下載下來,如果一個一個的下載很麻煩,我們可以先查找到所有的 c 語言代碼文件,然後將這些文件內容寫入到一個文件中,下載該文件,可以使用如下命令:
find . -name "*.c" -exec cat {} \; > all.c
例三:默認下,-exec 後面只能使用單個命令,如果想要多個命令,可以將多個命令寫入腳本文件中,然後在-exec 中使用這個腳本,可以使用如下命令:
find . -name "*.c" -exec ./command.sh {} \;
command.sh爲腳本內容:
#! /bin/bash
ls -l $1 # $1 表示第一個參數
cat $1