2012-03-21 1 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으로 복사하십시오.
{}find에서 /dir/file.jpg /dir/dir2/bla.jpg의 형식으로 목록을 확장하십시오.

+0

은 "cp : illegal option - -"으로 나와 작동하지 않습니다. Kaz의 대답은 나를 위해 일했다 – alexey

+0

@alexey 나는 당신의 오류를 재현 할 수 없다, 당신은 어떤 환경에서 그것을 실행 했습니까? – cctan

+0

오, 맞아 - 나는 OST (10.11.2)가 구식 인 것으로 알려진 bash를 사용하고있다 : GNU bash, 버전 3.2.57 (1) -release (x86_64-apple-darwin15) – alexey

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

나는 찬성 투표 것입니다. ;) –

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

이것은 문제에 대한 솔루션 응답 그녀는 Zsh의 솔루션과 매우 유사합니다. 왜 -1일까요? –

+0

숨김 파일을 복사하지 않습니다. – Metal3d

2

zsh을 에 : 당신이 당신의 응답 _A의 bit_을 설명하는 경우

cp /source/**/* /destination