2013-11-20 4 views
0

많은 하위 디렉토리와 파일이있는 두 개의 상위 디렉토리 A와 B가 있습니다. parentdir B에 앉아서이 두 명령을 입력하십시오. 그들 사이의 차이점은 무엇입니까? 당신이 무모했다 않는cp 사이의 차이점

cp -r /path/to/A/* * 

cp -r /path/to/A/* . 
+1

'cp -r/path/to/A/* *'디렉토리가'A' 디렉토리에 하나 이상의 파일이나 디렉토리가있는 경우조차 정확하지 않습니다. – vidit

+1

@vidit ... 결국'*'에 의해 확장 된 마지막 항목이 디렉토리 일 경우에는 작동 할 것이지만 (의도하지 않은 끔찍한 일들을 할지라도) ... – twalberg

답변

1

당신은 첫 번째 명령을 입력하지 않을 것 : 자신의 팽창에

*을 현재의 모든 비 숨겨진 파일/디렉토리의 이름으로 예배 규칙서. 따라서 /path/to/A에는 두 개의 하위 디렉터리 (spoonfork)가 포함되어 있으며 현재 디렉터리에는 세 개의 하위 디렉터리 (foo, barbaz)가 포함되어 있다고 가정 해 봅니다. 즉

cp -r /path/to/A/fork /path/to/A/spoon bar baz foo 

이 반복적으로 foo/path/to/A/fork, /path/to/A/spoon, barbaz (알파벳 순서의 마지막에 와서 일 현재 디렉토리에서 항목을) 복사 :이 같은 쉘이 첫 번째 명령을 해석하는 것을 의미한다. 따라서 foo 아래에 4 개의 새 디렉토리가 있습니다. foo/fork, foo/spoon, foo/barfoo/baz입니다.

두 번째 명령은 /path/to/A/spoon/path/to/A/fork을 재귀 적으로 현재 디렉터리에 복사하는 것을 의미합니다. 그러면 현재 디렉토리에 두 개의 새 서브 디렉토리 (forkspoon)가 작성됩니다.

관련 문제