Shell-Script
如何在相同的目錄結構之間複製具有相同副檔名的所有文件?
我有 2 個獨立的文件夾 A 和 B。B 有許多副檔名為
.build
. 跨 A 有一個 fe 子目錄,其結構與 B 的子目錄相同。例如 A 有
some_path/Tools/Camera/
,B 有different_path/Tools/Camera
。假設我手動辨識了 2 個子目錄,一個在 A 中,一個在 B 中,具有相同的結構,我需要將所有 .build 文件從 B 的子目錄複製到 A 中的子目錄中。我該怎麼做?
啟用
globstar
Bash shell 選項:shopt -s globstar
現在將目錄更改為 B 並執行:
for path in **/; do [ -d "<A-dir>/$path" ] && cp -n "$path/"*.build "<A-dir>/$path" done
這將遞歸檢查 B 中的每個子目錄,並查看 A 中是否有等效的子目錄。如果有,則它將
.build
B 子目錄中的所有文件複製到 A。
有很多方法可以做到這一點。
這是我想到的一個。
cd different_path find . -iname '*.build' | while read filename ; do cp -n "$filename" "some_path/${filename#./}" done
如果您有一些名稱不佳的文件在其名稱或類似名稱中帶有換行符,則可以改用空分隔符:
cd different_path find . -iname '*.build' -print0 | while IFS= read -r -d $'\0' filename ; do cp -n "$filename" "some_path/${filename#./}" done