如何在同一命令中查找某些檔案並將它們移動到新目錄?

如何在同一命令中查找某些檔案並將它們移動到新目錄?

所以我環顧四周,發現只有在目錄已經創建的情況下才可以執行此操作,即:

find source -name '*.z' -exec cp {} destination \;

但是我怎麼才能建立一個新目錄,我想在同一命令中發送這些文件?這是我嘗試過但沒有成功的方法:

find source -name '*.z' -exec cp {} | mkdir newDirectory \;

答案1

一種選擇是使用該install命令而不是cp.它可以選擇建立所有主要目錄。

find source -name '*.z' -exec install -D {} dest \;

答案2

無法傳輸數據mkdir那個方向。你可以這樣做:

find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +

或(假設檔名不包含換行符)

find source -name '*.z' | while IFS= read -r foo; do 
   mkdir -p newDirectory;
   cp "$foo" newDirectory;
done 

或者,如果您只想建立目錄,那麼名稱始終相同:

mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;

相關內容