Tôi đã rất hi vọng:
cp -R src/prog.js images/icon.jpg /tmp/package
sẽ mang lại một cấu trúc đối xứng trong dir đích:
/tmp
|
+-- package
|
+-- src
| |
| +-- prog.js
|
+-- images
|
+-- icon.jpg
nhưng thay vào đó, cả hai tệp đều được sao chép vào / tmp / package. Một bản sao phẳng. (Đây là trên OSX).
Có một hàm bash đơn giản mà tôi có thể sử dụng để sao chép tất cả các tệp, bao gồm các tệp được chỉ định bằng ký tự đại diện (ví dụ: src / *. Js) vào đúng vị trí của chúng trong thư mục đích không. Một chút giống như "cho mỗi tệp, chạy mkdir -p $(dirname "$file"); cp "$file" $(dirname "$file")
", nhưng có lẽ là một lệnh duy nhất.
Đây là một chủ đề có liên quan, điều đó cho thấy nó không thể thực hiện được. Mặc dù vậy, giải pháp của tác giả không quá hữu ích đối với tôi, bởi vì tôi chỉ muốn cung cấp danh sách các tệp, ký tự đại diện hoặc không, và tất cả chúng được sao chép vào dir đích. IIRC MS-DOS xcopy thực hiện điều này, nhưng dường như không có tương đương cho cp.