2016-11-03 97 views

回答

2

使用-exec選項:

find ./ -name "*pdf*" -exec cp -t . {} \+ 

{}被替換爲當前正在處理的文件名。

從手冊頁find

-exec command {} +

...的命令行是通過在年底追加每個選定的文件名.. 內置命令行是建立在多少與xargs構建其命令行的方式相同。

注意使用-t(目標目錄)選項(它是一個GNU擴展)。我們不能使用-exec cp {} . +,因爲匹配的文件名被追加到命令行的末尾,而最後必須指定目的地。另一個解決方法是調用sh

find ./ -name "*pdf*" -exec sh -c 'cp "[email protected]" .' '' {} + 

我慣常躲過了+字符。請注意,您應該轉義find語法的特殊字符以防止它們被shell擴展。特別是,在+之前可能不需要反斜槓,因爲大多數shell將它解釋爲一個字符串(它不會被展開爲不同的東西)。但是,你一定要逃出/報價;(適用命令對每個文件順序):

find -name "*pdf*" -exec cp -f {} . ';' 
+0

第一個並沒有爲我(Linux操作系統,慶典46年3月4日)......錯誤工作''查找:對'-exec'''缺少參數......這個''find -name'* pdf *'-exec cp -t ./ {} \ +' – Sundeep

+1

@Sundeep,fixed –