Linux:透過副檔名遞歸地將所有檔案複製到單一目錄

Linux:透過副檔名遞歸地將所有檔案複製到單一目錄

我正在嘗試將所有*.tif文件從 ./old 複製到 ./new。在 ./old 中,我有很多包含不同文件的子目錄,在 ./new 中,我只需要 TIF 文件,沒有資料夾樹。

所以,我嘗試了

cp -vR ./old/*.TIF ./new`

但得到了錯誤:

No such file or directory "./old/*.TIF"

我做錯了什麼?

答案1

為此使用查找find . -name "*.TIF" -exec cp {} new \;

所以find是用來找文件的。該命令表示find從此處開始的文件.,其中文件名-name以 結尾,.tif請記住用於 shell 擴展的雙引號。所以找到所有tif文件很簡單。

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

然後我們使用-exec對文件執行某些操作,在本例中cp找到{}目標目錄的文件new,後面跟著轉義分號\;

答案2

應該是這樣的。您必須輸入舊目錄:

cd old
cp -R *.tif ../new

答案3

.tif該目錄中可能沒有任何檔案old

此外,您可以獲得文件列表並使用簡單的腳本複製它們:

find /old -type f | xargs grep *.tif 會給你清單。

你可以這樣做:

for i in `find /old -type f | xargs grep *.tif` 
do
cp $i /new
done;

相關內容