2012-03-21 20 views
18

我有一個包含大量文件的目錄樹。我想將所有這些文件複製到一個新目錄中,但所有文件位於文件夾的底部。將整個目錄結構的每個文件複製到另一個的基本路徑

所以我有這樣的事情:

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 

,我想是這樣的:

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 

我敢肯定有是一個bashcommand,但還沒噸發現它呢。你有什麼想法?

CS

回答

12

你正在尋找各種方法來拉平目錄

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

find所有文件iname在不區分大小寫的名字模式。
cp複製一次到--target-directory命名爲/newfolder/
{}將列表從find擴展爲/dir/file.jpg /dir/dir2/bla.jpg的形式。

+0

不適用於我的「cp:非法選項 - - 」。 Kaz的答案爲我工作 – alexey 2016-03-07 22:04:53

+0

@alexey我不能再現你的錯誤,你在什麼環境中運行它? – cctan 2016-03-08 02:11:19

+0

哦,你是對的 - 我使用OSX的(10.11.2)建立在已知過時的bash中:GNU bash,版本3.2.57(1) - 發佈(x86_64-apple-darwin15) – alexey 2016-03-09 18:09:48

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

如果你描述你的答案_a bit_我會給予好評。 ;) – 2015-05-02 19:36:04

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

正確解決問題的答案。她與Zsh下的解決方案非常相似。那麼,爲什麼-1? – 2017-02-19 21:29:45

+0

它不復制隱藏文件順便說一句 – Metal3d 2017-05-17 14:17:47

2

的zsh

cp /source/**/* /destination

相關問題