2012-03-21 33 views
18

Tôi có một cây thư mục với nhiều tệp trong đó. Tôi muốn sao chép tất cả các tệp đó vào một thư mục mới, nhưng với tất cả các tệp nằm trong cơ sở của thư mục.Sao chép mọi tệp của toàn bộ cấu trúc thư mục vào đường dẫn cơ sở của một đường dẫn khác của

Vì vậy, tôi có một cái gì đó như thế này:

images 
    ├── avatar.png 
    ├── bg.jpg 
    ├── checkbox.png 
    ├── cross.png 
    ├── datatables 
    │   ├── back_disabled.png 
    │   ├── back_enabled.png 
    │   ├── forward_disabled.png 
    │   ├── forward_enabled.png 
    │   ├── sort_asc.png 
    │   ├── sort_asc_disabled.png 
    │   ├── sort_both.png 
    │   ├── sort_desc.png 
    │   └── sort_desc_disabled.png 
    ├── exclamation.png 
    ├── forms 
    │   ├── btn_left.gif 
    │   ├── btn_right.gif 
    │   ├── checkbox.gif 
    │   ├── input 
    │   │   ├── input_left-focus.gif 
    │   │   ├── input_left-hover.gif 
    │   │   ├── input_left.gif 
    │   │   ├── input_right-focus.gif 
    │   │   ├── input_right-hover.gif 
    │   │   ├── input_right.gif 
    │   │   ├── input_text_left.gif 
    │   │   └── input_text_right.gif 
    │   ├── radio.gif 
    │   ├── select_left.gif 
    │   ├── select_right.gif 

Và tôi muốn một cái gì đó như thế này:

new_folder 
    ├── avatar.png 
    ├── bg.jpg 
    ├── checkbox.png 
    ├── cross.png 
    ├── back_disabled.png 
    ├── back_enabled.png 
    ├── forward_disabled.png 
    ├── forward_enabled.png 
    ├── sort_asc.png 
    ├── sort_asc_disabled.png 
    ├── sort_both.png 
    ├── sort_desc.png 
    ├── sort_desc_disabled.png 
    ├── exclamation.png 
    ├── btn_left.gif 
    ├── btn_right.gif 
    ├── checkbox.gif 
    ├── input_left-focus.gif 
    ├── input_left-hover.gif 
    ├── input_left.gif 
    ├── input_right-focus.gif 
    ├── input_right-hover.gif 
    ├── input_right.gif 
    ├── input_text_left.gif 
    ├── input_text_right.gif 
    ├── radio.gif 
    ├── select_left.gif 
    ├── select_right.gif 

Tôi chắc rằng có một bashcommand cho rằng, nhưng tôi thiên đường' t tìm thấy nó được nêu ra. Bạn có bất cứ ý tưởng?

CS

Trả lời

12

bạn đang tìm kiếm cách để làm phẳng các thư mục

find /images -iname '*.jpg' -exec cp --target-directory /newfolder/ {} \; 

find tất cả các file iname trong trường hợp chế độ tên nhạy cảm.
cp sao chép một lần đến --target-directory có tên /newfolder/.
{} mở rộng danh sách từ find thành hình thức /dir/file.jpg /dir/dir2/bla.jpg.

+0

không hoạt động với tôi với "cp: tùy chọn bất hợp pháp - -". Câu trả lời của Kaz làm việc cho tôi – alexey

+0

@alexey Tôi không thể tái tạo lỗi của bạn, bạn đã chạy nó trong môi trường nào? – cctan

+0

oh bạn đã đúng - Tôi đang sử dụng OSX (10.11.2) được xây dựng trong bash được biết là đã lỗi thời: GNU bash, phiên bản 3.2.57 (1) -release (x86_64-apple-darwin15) – alexey

28
find /source-tree -type f -exec cp {} /target-dir \; 
+2

Tôi muốn upvote nếu bạn mô tả bit_ câu trả lời _a của bạn. ;) –

-2
$ cd images && cp ** new_folder/ 
+0

Điều này giải pháp đáp ứng cho câu hỏi một cách chính xác. Cô ấy rất giống với giải pháp dưới Zsh. Vì vậy, tại sao -1 ??? –

+0

Nó không sao chép các tệp ẩn BTW – Metal3d

2

On zsh:

cp /source/**/* /destination

Các vấn đề liên quan