한 디렉터리에서 다른 디렉터리로 여러 파일을 복사하는 방법

한 디렉터리에서 다른 디렉터리로 여러 파일을 복사하는 방법

한 디렉터리에서 다른 디렉터리로 여러 파일을 복사하고 싶습니다. 다음 구조를 포함하는 변수(파일)가 있습니다.

file1 file2

File1과 file2는 dir1에 있고 작동하지 않는 다음 코드를 사용하여 dir2에 복사하려고 합니다.

cp ./dir1/$files ./dir2

답변1

여러 가지 방법이 있습니다. 가장 쉬운 방법은 첫 번째 디렉터리로 전환하는 것입니다.

cd dir1 ; cp $files ../dir2

한 가지 문제는 이름이 공백으로 구분된 문자열이 이름을 조작하는 데 가장 적합한 형식이 아니라는 점입니다. 특히 이름에 공백이 포함된 경우에는 더욱 그렇습니다. 당신이 가지고 있는 것은 당신이 가지고 있는 것이지만, bash, zsh, ksh 또는 배열과 유사한 것이 있기를 바랍니다. 문자열을 배열로 변경:

names=( $files )

그런 다음 이름 배열의 각 요소에 "dir1/"을 추가하는 등의 변환을 적용할 수 있습니다.

cp "${names[@]/#/dir1/}" dir2

이것은 가장 명확한 구문이 아니므로 조금 더 자세히 살펴보겠습니다.

  1. 첫 번째는 /대체 작업을 소개합니다.
  2. 정규 표현식 #과 유사하게 요소의 시작 부분 과 일치합니다 .^
  3. 두 번째는 /교체의 "from" 부분을 종료합니다.
  4. "to" 부분이 대체 되었습니다 dir1/. 세 번째 부분은 특별한 것이 아니며 /"to" 부분에 있는 문자일 뿐입니다.
  5. 이렇게 하면 [@]배열의 모든 요소에 대해 작동합니다. [@]단어 분리를 방지하려면 내부 큰따옴표를 사용하세요 .
  6. 및 대체 작업을 변수 이름과 결합 {하여 사용해야 합니다 .}[@]
  7. 이것은 $단지 일반적인 변수 참조입니다.

관련 정보