将整个目录结构的每个文件复制到另一个的基本路径中

csc*_*sch 21 linux directory bash find cp

我有一个目录树,里面有很多文件.我想将所有这些文件复制到一个新目录中,但所有文件都位于文件夹的基础中.

所以我有这样的事情:

    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
Run Code Online (Sandbox Code Playgroud)

我想要这样的事情:

    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
Run Code Online (Sandbox Code Playgroud)

我很确定有一个bashcommand,但我还没有找到它.你有什么想法?

CS

Kaz*_*Kaz 34

find /source-tree -type f -exec cp {} /target-dir \;
Run Code Online (Sandbox Code Playgroud)

  • 如果你描述你的答案,我会投票赞成__ bit_.;) (2认同)

cct*_*tan 13

您正在寻找展平目录的方法

find /images -iname '*.jpg' -exec cp --target-directory /newfolder/ {} \;
Run Code Online (Sandbox Code Playgroud)

find所有文件都不iname区分大小写的名称模式.
cp复制一次--target-directory命名/newfolder/.
{}将列表扩展find/dir/file.jpg /dir/dir2/bla.jpg.

  • “cp:非法选项--”对我不起作用。Kaz 的回答对我有用 (2认同)