![這個指令有什麼作用?](https://rvso.com/image/1157173/%E9%80%99%E5%80%8B%E6%8C%87%E4%BB%A4%E6%9C%89%E4%BB%80%E9%BA%BC%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
但問題是這個指令是做什麼的?我知道 find 命令,但關於選項,沒有,例如引號中的表達式以及 -exec 和 ...
find /var -name "[0-9]*test[A-Z]" -exec {} /root/{}';'
答案1
find /var
指示find
在目錄中開始搜尋/var
。
-name "[0-9]*test[A-Z]"
find
是指示僅傳回與模式相符的文件/資料夾的搜尋模式"[0-9]*test[A-Z]"
。如果您不引用搜尋字串,您的 shell 將擴展該搜尋模式並嘗試執行結果。透過引用搜尋模式,您可以將其作為參數傳遞給find /var -name
.
-exec...
原始問題的部分有一個語法錯誤,它應該是(注意甜點和雛菊評論-exec {} /root/{} ';'
之前的空格)。 它指示執行以下參數,其中被替換為 的搜尋結果。通常您還應該引用它們以防止 shell 擴展。';'
find
{}
find
最後,定義了執行命令時';'
該部分應如何處理搜尋結果。指示 find對每個查找結果執行命令。相反,使用該命令時,運行時會擴展所有查找結果。這也必須被引用或轉義,以防止 shell 擴展它並對 進行論證。-exec
';'
-exec
'+'
-exec
find...-exec
";"
一個小例子說明了和之間的區別,"+"
如下所示。
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA