2012-03-21 16 views
18

taban yoluna kopyalayın İçinde çok fazla dosya bulunan bir dizin ağacı var. Bu dosyaların tümünü yeni bir dizine kopyalamak istiyorum, ancak klasörün tabanında bulunan tüm dosyalar.Tüm dizin yapısının her bir dosyasını başka bir

Yani böyle bir şey var:

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 

Ve böyle bir şey istiyorum:

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 

bunun için bir bashcommand vardır eminim, ama ben cenneti' Henüz bulunamadı. Hiç fikrin var mı?

CS

cevap

12

sen dizini harf duyarsız adı modunda

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

find tüm dosyalar iname düzleştirmek için yollar aramaktadır. cp Bir kez --target-directory adlı belgeye /newfolder/ adı verilir.
{}, listeyi /dir/file.jpg /dir/dir2/bla.jpg biçiminde find'dan genişletir.

+0

benim için "cp: illegal option - -" ile çalışmadı. Kaz cevabı benim için çalıştı – alexey

+0

@alexey Hatanızı yeniden üretemiyorum, hangi ortamda çalıştırdınız? – cctan

+0

oh haklısın - OSX'leri (10.11.2) şu anki tarihte bilinen bash'da inşa ediyorum: GNU bash, 3.2.57 (1) -release (x86_64-apple-darwin15) – alexey

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

Ben upvote ederim. ;) –

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

soruna doğru cevap cevabı. Zsh'ın çözümüne çok benziyor. Peki neden -1 ??? –

+0

Gizli dosyaları BTW kopyalamaz – Metal3d

2

zsh Açık: Eğer cevabınız ._a bit_ anlatırsanız

cp /source/**/* /destination

İlgili konular