[bash] 한 디렉토리에서 기존 디렉토리로 파일 복사

bash에서 나는 이것을해야한다 :

  1. 디렉토리의 모든 파일을 가져옵니다

  2. 기존 디렉토리에 복사

어떻게해야합니까? 나는 시도했다 cp -r t1 t2(t1과 t2는 기존 디렉토리이고, t1은 파일을 가지고 있음) t2 안에 t1이라는 디렉토리를 만들었지 않기를 원하지 않는다. 어떻게해야합니까?



답변

당신이 원하는 것은 :

cp -R t1/. t2/

끝에있는 점은 디렉토리 자체가 아니라 현재 디렉토리의 내용을 복사하도록 지시합니다. 이 방법에는 숨겨진 파일과 폴더도 포함됩니다.


답변

한 디렉토리에서 현재 디렉토리 로 무언가를 복사하려면 다음을 수행하십시오.

cp dir1/* .

이것은 숨겨진 파일을 복사하지 않으려는 것으로 가정합니다.


답변

cp dir1/* dir2

또는 dir1 안에 복사하려는 디렉토리가있는 경우

cp -r dir1/* dir2


답변

t1이 파일이 들어있는 폴더이고 t2가 빈 디렉토리라고 가정합니다. 원하는 것은 다음과 같습니다.

sudo cp -R t1/* t2/

첫 번째 예에서 t1과 t2는 전체 경로 또는 상대 경로 (현재 위치에 따라) 여야합니다. 원하는 경우 빈 폴더 (t2)로 이동하여 다음을 수행 할 수 있습니다.

sudo cp -R t1/* ./

또는 파일 (t1)이있는 폴더로 이동하여 다음을 수행 할 수 있습니다.

sudo cp -R ./* t2/

참고 : * 기호 (또는 와일드 카드)는 모든 파일 및 폴더를 나타냅니다. -R 플래그는 재귀 적으로 모든 것을 의미합니다.


답변

cp -R t1/ t2

소스 디렉토리의 후행 슬래시는 시맨틱을 약간 변경하므로 디렉토리 자체가 아닌 컨텐츠를 복사합니다. 또한 Bertrand의 답변에 포함 된 글 로빙 및 보이지 않는 파일의 문제를 피합니다 ( t1/*보이지 않는 파일을 복사하지 않으면`t1 / * t1 /.* ‘사본 t1 /. 및 t1 / ..을 복사하지 않음).


답변

일부 세부 사항에 따라 다음과 같이해야 할 수도 있습니다.

r=$(pwd)
case "$TARG" in
    /*) p=$r;;
    *) p="";;
    esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"

… 이것은 기본적으로 SRC 디렉토리로 변경되어 대상에 복사 한 다음 시작한 시점으로 되돌아갑니다.

추가 소란은 상대 또는 절대 목표를 처리하는 것입니다.

(이것은 미묘한 의미에 의존하지 않는 cp나는 확실히 그 아니에요 안정, 휴대용이기 때문에 / … 명령 자체 … 그것은 또는 후행하지 않고 소스 사양을 처리하는 방법에 대한, 그리고 신뢰성을 넘어 단지 GNU cp와 I 앞으로도 계속 그렇게 될지 모르겠습니다).


답변

일부 디렉토리 내부에서는 “folder1″의 모든 내용을 일부 디렉토리 내의 새 디렉토리 “folder2″로 복사하므로 전체 사용됩니다.

$ (pwd)는 현재 디렉토리의 경로를 가져옵니다.

folder1 뒤에있는 점 (.)을 확인하여 folder1 내의 모든 내용을 가져옵니다.

cp -r $(pwd)/folder1/. $(pwd)/folder2